class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
number=0
next=False
dict1={'M':1000,'D':500,'C':100,'L':50,'X':10,'V':5,'I':1,}
dict2={'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900}
for i in range(len(s)):
if next:
next=False
continue
if s[i] in ('M','D','L','V'):
number=number+dict1[s[i]]
if s[i] in ('I','X','C'):
if i!=(len(s)-1) and s[i:i+2] in dict2:
number=number+dict2[s[i:i+2]]
next=True
else:
number=number+dict1[s[i]]
return number
重點:
- 當I/X/C在大符號之前俐芯,計算完需跳過下一次循環(huán)
- 使用字典
后來看評論里大家的討論,發(fā)現(xiàn)還有一種想法更清晰:
首先建立一個HashMap來映射符號和值,然后對字符串從左到右來辑畦,如果當前字符代表的值不小于其右邊羞反,就加上該值布朦;否則就減去該值。以此類推到最后昼窗,最終得到的結(jié)果即是答案