力扣 13.罗马数字转整数
文章目录
- 题目
- 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.罗马数字转整数相关推荐
- 力扣13 罗马数字转整数逻辑详解
力扣 13 .罗马数字转整数逻辑详解 题目详情 逻辑分析 代码实现 题目详情 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...
- 力扣网-罗马数字转整数
问题简介 这个问题其实与整数转化为罗马数字相当. 编程思路 转换函数写全一些(包括400.900.40.90等) Map<String, Integer> transfer = new ...
- 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 ...
- 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 ...
- java输出罗马数字,【Java】【刷穿 LeetCode】13. 罗马数字转整数(简单)
首页 专栏 java 文章详情 0 [刷穿 LeetCode]13. 罗马数字转整数(简单) 宫水三叶发布于 今天 14:14 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 ...
- 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 ...
- 刷爆力扣之罗马数字转整数
刷爆力扣之罗马数字转整数 HELLO,各位看官大大好,我是阿呆
- 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 ...
- 【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 ...
最新文章
- 写有效率的SQL查询(IV)
- Matt Smith 的 悬浮标签
- java 整数加减_Java计算长整数加减(字符串表示)
- Object.observe将不加入到ES7
- IDA 7.0 如何使用 IDAGolangHelper插件
- [.NET] 《Effective C#》快速笔记(四)- 使用框架
- Python 库 PyPI 危机!
- linux使用触摸屏驱动程序,Linux触摸屏驱动
- window10耳机插入没有声音,电脑里没有Realtek 高清晰音频管理器解决方法
- java对接云点播上传视频,视频转码,播放视频,删除视频
- 计算机教师知识老化,【计算机教学论文】技校计算机教学分析(共2800字)
- windows中关于委派(delegation)的理解
- 毕业论文word排版技巧
- MATH1013总结
- bpf-bcc加载代码分析
- 分数的计算机题,分数问题
- 文章随笔日记完全不通呀
- matlab图形图像处理论文,基于matlab图形图像处理技术-本科毕设论文.doc
- 小程序多少钱?一个小程序多少钱?
- 【学习笔记】Tensorflow-ENet代码学习(一)