Solution for Roman to Integer
05 Aug 2018- 倒序遍历求值
罗马数字存在以下特征:
key | value |
---|---|
I | 1 |
IV | 4 |
V | 5 |
IX | 9 |
X | 10 |
XL | 40 |
L | 50 |
XC | 90 |
C | 100 |
CD | 400 |
D | 500 |
CM | 900 |
M | 1000 |
因此可以通过倒序遍历,判断当前字母和前一个字母的大小,求和时对应+
/-
当前字母代表的数值,最终累加得到结果:
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
numMap = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
total = 0
prev = 0
for char in s[::-1]:
curr = numMap[char]
if curr < prev:
total -= curr
else:
total += curr
prev = curr
return total