【leetcode】Roman to Integer
2014-12-24 22:36
176 查看
Roman to Integer
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.
罗马数字有如下符号:
基本字符 | I | V | X | L | C | D | M |
阿拉伯数字 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
相同的数字连写,所表示的数等于这些数字相加得到的数,例如:III = 3
小的数字在大的数字右边,所表示的数等于这些数字相加得到的数,例如:VIII = 8
小的数字,限于(I、X和C)在大的数字左边,所表示的数等于大数减去小数所得的数,例如:IV = 4
正常使用时,连续的数字重复不得超过三次
在一个数的上面画横线,表示这个数扩大1000倍(本题只考虑3999以内的数,所以用不到这条规则)
从前向后遍历罗马数字,如果某个数比前一个数小,则加上该数。反之,减去前一个数的两倍然后加上该数
class Solution { public: int romanToInt(string s) { map<char,int> hash; hash['I'] = 1; hash['V'] = 5; hash['X'] = 10; hash['L'] = 50; hash['C'] = 100; hash['D'] = 500; hash['M'] = 1000; int result=hash[s[0]]; for(int i=1;i<s.length();i++) { int pre=hash[s[i-1]]; int cur=hash[s[i]]; if(pre>=cur) { result+=cur; } else { result+=cur-2*pre; } } return result; } };
相关文章推荐
- LeetCode: Integer to Roman
- LeetCode Online Judge 题目C# 练习 - Roman to Integer
- [Leetcode 17] 13 Roman to Integer
- LeetCode:Roman to Integer
- LeetCode Online Judge 题目C# 练习 - Integer to Roman
- LeetCode12: Integer to Roman
- leetcode roman to integer
- LeetCode: Roman to Integer
- Leetcode: Roman to Integer
- leetcode integer to roman number conversion
- LeetCode: Integer to Roman
- 【leetcode】Roman to Integer
- [Leetcode 44] 12 Integer To Roman
- [Leetcode] Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- 【leetcode】Integer to Roman
- [LeetCode]Roman to Integer
- [leetCode] Integer to Roman
- [LeetCode] Roman To Integer 解题报告