LeetCode 13. Roman to Integer
2017-03-20 16:16
309 查看
题目
题解
优化
罗马数字采用七个罗马字母作数字,即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。
记数的方法:
1. 相同的数字连写,所表示的数等于这些数字相加得到的数
2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数
3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
4. 在一个数的上面画一条横线,表示这个数增值 1,000 倍。
首先我使用了一个
题目确定输入的罗马数字小于4000,我们可以先不考虑上面的规则4。
条件 1 和条件 2 我们可以合并成一条,即把罗马数代表的数字直接相加,但是,对于小数在大数之后(条件3),做减法。代码如下:
题解
优化
[题目]
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. input "DCXXI" output 621
题解
首先需要先弄清楚罗马数字的规则:罗马数字采用七个罗马字母作数字,即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。
记数的方法:
1. 相同的数字连写,所表示的数等于这些数字相加得到的数
2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数
3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
4. 在一个数的上面画一条横线,表示这个数增值 1,000 倍。
首先我使用了一个
Vector存储罗马数字及其表示的数字。
题目确定输入的罗马数字小于4000,我们可以先不考虑上面的规则4。
条件 1 和条件 2 我们可以合并成一条,即把罗马数代表的数字直接相加,但是,对于小数在大数之后(条件3),做减法。代码如下:
int romanToInt(string s) { vector<int> romanDict(26,0); romanDict['I'-'A'] = 1; romanDict['V'-'A'] = 5; romanDict['X'-'A'] = 10; romanDict['L'-'A'] = 50; romanDict['C'-'A'] = 100; romanDict['D'-'A'] = 500; romanDict['M'-'A'] = 1000; int result = 0; for(int i=0;i<s.size();i++){ if(i!=s.size()-1 && romanDict[s[i]-'A']<romanDict[s[i+1]-'A']) result -= romanDict[s[i]-'A']; else result += romanDict[s[i]-'A']; } return result; }
优化
实际使用的时候,可以把 romanDict 的初始化放在函数外,这样就不用每次计算罗马数字的时候都初始化一遍了。相关文章推荐
- leetcode--13. Roman to Integer
- 2017.10.21 LeetCode - 13. Roman to Integer - 28. Implement strStr()
- leetcode-13. Roman to Integer
- leetcode 13. Roman to Integer
- LeetCode --- 13. Roman to Integer
- LeetCode-13. Roman to Integer
- [leetcode]13. Roman to Integer
- 13. Roman to Integer leetcode Python 2016 new Season
- leetcode 每日一题 13. Roman to Integer
- [LeetCode] 13. Roman to Integer ❤
- LeetCode——13. Roman to Integer
- leetcode(6)13. Roman to Integer
- Leetcode 13. Roman to Integer
- LeetCodet题解--13. Roman to Integer
- LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)
- Leetcode 13. Roman to Integer
- 【LeetCode】13. Roman to Integer
- leetcode:13. Roman to Integer
- Leetcode-13. Roman to Integer
- leetcode 13. Roman to Integer