leetcode No13. Roman to Integer
来源:互联网 发布:9月2非农数据 编辑:程序博客网 时间:2024/06/05 20:55
前言:
先说点背景吧,这题我一直放着没做,因为我不知道Roman数是怎么计数的呀,然后最近在看《数学之美》(特别有意思的书,第一次觉得数学还挺有意思的)罗马人也是用不同的符号代表数的不同量级。
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000
解码规则:小数字出现在大数字左边为减,右边为加。
Ex:IV表示5-1=4,VII表示5+2=7,IIXX表示10-2+10=18
PS:这种解码规则太复杂,而且对于大的数字很难描述。比如写一百万,要写无数个M。直到近代他们才在M上用上划线表示几万和几十万。而中国人的解码规则是乘法,所以我们的祖先还是挺聪明的。
Question:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
就是把罗马字转换成十进制整型数。
Algorithm:
比较相邻的数,如果前一个数比后一个数大就加法,如果前一个数比后一个数小就减法。
Submitted Code:
class Solution {public: int romanToInt(string s) { if(s.size()==0)return 0; 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; if(s.size()==1)return hash[s[0]]; int res = hash[s[0]]; for(int i=1;i<s.size();i++) { if(hash[s[i-1]]<hash[s[i]]) res=res-hash[s[i-1]]+hash[s[i]]-hash[s[i-1]]; //因为之前加过hash[s[i-1]] else res=hash[s[i]]+res; } return res; }};
0 0
- LeetCode : No13 Roman to Integer
- leetcode No13. Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- LeetCode: Integer to Roman
- LeetCode : Roman to Integer
- [Leetcode] Roman to Integer
- [Leetcode] Integer to Roman
- Leetcode: Integer to Roman
- Leetcode: Roman to Integer
- 多线程 - volatile
- yum依赖错误处理:清理重复的rpm包
- 【CSS3】颜色--慕课网【学习总结】
- Android 6.0 运行时权限处理
- ID3和C4.5决策树算法总结
- leetcode No13. Roman to Integer
- iOS开发规范
- xshell和Idea常用快捷键=>常用的哟!
- 线性常系数微分方程
- java并发编程(六)--volatile意外问题的正确分析解答
- java 实现oracle VPD 权限控制
- UILabel的相关属性设置
- 1.破解intellij idea企业版
- 照片框架