13. Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
My Solution
"""
I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)
罗马数字一共有 7 个数字符号:I、V、X、L、C、D、M。用罗马数字表示数时、
如果几个相同的数字并列、就表示这个数的值是数码的几倍。
例如:罗马数字要表示 3、可以写成 Ⅲ;要表示 20,可以写成 XX;要表示 30、可写成 XXX。
不相同的几个数码并列时,如果小的数码在右边,就表示数的数值是这几个数码的和;
如果小的数码在左边,就表示数的数值是数码之差。
"""
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
sum, roman_dict = 0, {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
if len(s) == 1:
return roman_dict[s[0]]
for i in range(len(s)-1):
if roman_dict[s[i]] < roman_dict[s[i+1]]:
sum -= roman_dict[s[i]]
else:
sum += roman_dict[s[i]]
return sum + roman_dict[s[-1]]
网友评论