PROBLEM
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
EXAMPLE
Input:IV
Output:4
题目解析
这道题主要需要搞清楚罗马数字和阿拉伯数字的转换规则,每个字母代表多少以及排列顺序对数字大小的影响等,搞清楚这些,只要按照规则写出程序即可。
规则如下:
罗马数字 | M | D | C | L | X | V | I |
阿拉伯数字 | 1000 | 500 | 100 | 50 | 10 | 5 | 1 |
CODE
class Solution:
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
result = 0
dic = { 'M' : 1000, 'D' : 500, 'C' : 100, 'L' : 50, 'X' : 10, 'V' : 5, 'I' : 1};
for i in range(len(s) - 1):
if dic[s[i]] < dic[s[i + 1]]:
result = result - dic[s[i]]
else:
result += dic[s[i]]
result += dic[s[-1]]
return result
需要注意的是,由于当前位要与下一位进行比较,所以只循环len(s)-1次,再在最后加上最后一位的数值。