先建立一个罗马字符对应的阿拉伯数字的字典。
再遍历该罗马数字字符串,若当前位比后一位数值小,说明是IV、IX这种情况,需要减去当前位,如IV不是I+V=6而是V-I=4。若当前位大于后一位,正常加就可以了。
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
d = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
ans = 0
for i in range(len(s)):
if i < len(s) - 1 and d[s[i]] < d[s[i+1]]:
ans -= d[s[i]]
else:
ans += d[s[i]]
return ans