文章目录

  • 题目
  • AC代码
  • 总结

题目

题目在这
这是一道简单等级的题目。

AC代码

这是我的思路,就是按照题中给的意思,一行代码一行代码地撸出来的,显得很笨。

class Solution {public:
int romanToInt(string s) {int len = s.size();map<char, int> m;m['I'] = 1;m['V'] = 5;m['X'] = 10;m['L'] = 50;m['C'] = 100;m['D'] = 500;m['M'] = 1000;int res = 0;for (int i = 0; i < len; ++i) {if (s[i] == 'I') {if (s[i + 1] == 'V') {res += 4;++i;} else if (s[i + 1] == 'X') {res += 9;++i;} else {res += 1;}continue;} else if (s[i] == 'X') {if (s[i + 1] == 'L') {res += 40;++i;} else if (s[i + 1] == 'C') {res += 90;++i;} else {res += 10;}continue;} else if (s[i] == 'C') {if (s[i + 1] == 'D') {res += 400;++i;} else if (s[i + 1] == 'M') {res += 900;++i;} else {res += 100;}continue;}res += m[s[i]];}return res;
}
};

改进代码,让代码更简洁。
观察可以发现无非是IV、XL类型的罗马数字我们无法一次性搞明白。但是发现如果是第一个数对应的数字比第二个数对应的数字小,那么在res中将其减去即可,这样就省去了大量的if else语句。
(听说用switch case语句会更快哟~)

class Solution {private://私有的unordered_map<char, int> symbolValues = {//unordered_map比map对于单个元素的访问效率高{'I', 1},{'V', 5},{'X', 10},{'L', 50},{'C', 100},{'D', 500},{'M', 1000},};//map可以像python中字典一样的生成public:int romanToInt(string s) {int res = 0;int n = s.size();for (int i = 0; i < n; ++i) {int value = symbolValues[s[i]];if (i < n - 1 && value < symbolValues[s[i + 1]]) {res -= value;} else {res += value;}}return res;}
};

总结

目前做题很容易直接按照题目来一步一步的模拟,不去发现一些规律来写。所以以后做题的时候遇见要大量重复代码的,就可以找一找内在的一些规律,使代码更加的简洁。

力扣 13.罗马数字转整数相关推荐

  1. 力扣13 罗马数字转整数逻辑详解

    力扣 13 .罗马数字转整数逻辑详解 题目详情 逻辑分析 代码实现 题目详情 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...

  2. 力扣网-罗马数字转整数

    问题简介  这个问题其实与整数转化为罗马数字相当. 编程思路 转换函数写全一些(包括400.900.40.90等) Map<String, Integer> transfer = new ...

  3. c语言罗马数字换成整数,leetcode 13 罗马数字转整数 C语言

    leetcode 13 罗马数字转整数 原题 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  4. LeetCode(13.罗马数字转整数) JAVA Hashmap

    LeetCode(13.罗马数字转整数) JAVA Hashmap 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...

  5. java输出罗马数字,【Java】【刷穿 LeetCode】13. 罗马数字转整数(简单)

    首页 专栏 java 文章详情 0 [刷穿 LeetCode]13. 罗马数字转整数(简单) 宫水三叶发布于 今天 14:14 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 ...

  6. Python LeetCode(13.罗马数字转整数)

    Python LeetCode(13.罗马数字转整数) 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

  7. 刷爆力扣之罗马数字转整数

    刷爆力扣之罗马数字转整数 HELLO,各位看官大大好,我是阿呆

  8. Leetcode 13.罗马数字转整数

    Leetcode 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100 ...

  9. 【LeetCode】【Java】13. 罗马数字转整数——给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

    13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

最新文章

  1. 写有效率的SQL查询(IV)
  2. Matt Smith 的 悬浮标签
  3. java 整数加减_Java计算长整数加减(字符串表示)
  4. Object.observe将不加入到ES7
  5. IDA 7.0 如何使用 IDAGolangHelper插件
  6. [.NET] 《Effective C#》快速笔记(四)- 使用框架
  7. Python 库 PyPI 危机!
  8. linux使用触摸屏驱动程序,Linux触摸屏驱动
  9. window10耳机插入没有声音,电脑里没有Realtek 高清晰音频管理器解决方法
  10. java对接云点播上传视频,视频转码,播放视频,删除视频
  11. 计算机教师知识老化,【计算机教学论文】技校计算机教学分析(共2800字)
  12. windows中关于委派(delegation)的理解
  13. 毕业论文word排版技巧
  14. MATH1013总结
  15. bpf-bcc加载代码分析
  16. 分数的计算机题,分数问题
  17. 文章随笔日记完全不通呀
  18. matlab图形图像处理论文,基于matlab图形图像处理技术-本科毕设论文.doc
  19. 小程序多少钱?一个小程序多少钱?
  20. 【学习笔记】Tensorflow-ENet代码学习(一)

热门文章

  1. uva 11997(优先队列)
  2. 剑指offer java -查找旋转数组的最小数字
  3. Oracle使用ODBC连接配置
  4. Word 模板 - 新建向导
  5. 将视图状态存入数据库(3)
  6. iOS一个简单的设置圆角不引起性能问题的分类
  7. 跟我一起学Angular2(1)-了解ng模块化
  8. 【Tomcat】Tomcat下设置项目为默认项目
  9. 输入几个分数,去除最高2个,最低2个,求和以后再求平均分(5个以上)
  10. Linux 权限设置