13. Roman to Integer
来源:互联网 发布:适配器模式 java 编辑:程序博客网 时间:2024/06/03 12:01
1.Question
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
2.CodecodeA
class Solution {public: int romanToInt(string s) { unordered_map<char,int> map;map['I'] = 1; map['V'] = 5; map['X'] = 10; map['L'] = 50; map['C'] = 100; map['D'] = 500; map['M'] = 1000; int sum = 0; for(int i = 0; i < s.size(); i++) { if(i == s.size() - 1) sum += map[s[i]]; else { if(map[s[i]] < map[s[i+1]]) { sum += map[s[i+1]] - map[s[i]]; i++; } else sum += map[s[i]]; } } return sum; }};
codeB
class Solution {public: int romanToInt(string s) { int sum = 0; for(int i = 0; i < s.size(); i++) { int s1 = sigleRomanToInt(s[i]), s2 = sigleRomanToInt(s[i+1]); if(s1 < s2) { sum += s2 - s1; i++; } else sum += s1; } return sum; } int sigleRomanToInt(char c){ switch(c) { case 'I' : return 1; case 'V' : return 5; case 'X' : return 10; case 'L' : return 50; case 'C' : return 100; case 'D' : return 500; case 'M' : return 1000; default : return 0; } }};
3.Note
a. codeA 利用一个哈希表来将字母和数字进行映射, codeB 通过swich case 来映射。在leetcode 上 codeB 要比 codeA 快一倍。
b. 本题思想是根据罗马数字的规律,“小数”组合最多只能由两个罗马数字组成,所以我们每次检测相邻的两个罗马数字就好了,如果是“小数”则当“小数”处理,如果不是“小数”,则把当前罗马数字当单个罗马数字处理就好了。还有一点要考虑的是最后罗马数字的情况。
c. 其实还有一种更简洁的做法,一次遍历就可以了。就是遍历罗马数字,如果当前罗马数字比后一个数大,则 sum+= 当前罗马数字,如果当前罗马数字比后一个数小,则 sum-= 当前罗马数字。这个解法更简洁,他满足罗马数字的分布条件。
d. 头文件<unordered_map>,<string>.
0 0
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- Happy 2004(一元线性同余方程组)
- JVM(1)——JVM内存分区
- ARM的六大类指令集--- 加载/存储指令
- 2530: 小勇玩lol
- linux chmod命令
- 13. Roman to Integer
- fatal error LNK1201:写入程序数据库“***.pdb”时出错;请检查是否是磁盘空间不足、路径无效或权限不够
- [Poj 2488] A Knight's Journey
- activity中onSaveInstanceState方法调用时机详解
- python系列之 RabbitMQ -- Routing
- java语言程序设计第十版(Introduce to java) 课后习题 chapter6-25
- 2016SDAU课程练习一1007
- 一致性hash算法释义
- 利用堆栈实现四则表达式运算器