题目
思路:
将字符:数值
存入哈希表Roman2Int
。从左到右遍历输入的字符。正常情况是左边字符大于右边字符,即s[i]>s[i+1]
,则加上左边字符代表的数字。遇到左边字符小于右边字符的情况,即s[i]<s[i+1]
时,则需要减去左边字符代表的数字。Int
用于存储转化来的数字,初始化为0,随着循环加上或减去字符代表的数字。
def romanToInt(s: str) -> int:
Roman2Int = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
Int = 0
for index in range(len(s) - 1):
# len(s)-1操作后,Roman2Int[s[index + 1]]才能表示最后一个字符
if Roman2Int[s[index]] < Roman2Int[s[index + 1]]:
Int -= Roman2Int[s[index]]
else:
Int += Roman2Int[s[index]]
return Int + Roman2Int[s[-1]]
# Roman2Int[s[-1]] 为最后一个字符
print(romanToInt("III"))