题目大意:将一个字符串表示的罗马数字转化成整数输出
题目分析:从前往后扫描罗马数字,根据相应的键值对将每个字母表示的值相加即可。这里有两种情况:1.罗马数字中大的数字在小的数字的左边,这是正常的情况,只要将当前值累加到result中即可。 2.罗马数字中大的数字在小的数字的右边,只要将大的数字表示的值减去小的数字表示的值,将差值累加到result中。同时,指针向后移动两个位置即可。
代码展示:
class Solution:
def romanToInt(self, s):
dic = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
result = 0
i = 0
while i<len(s):
if i<len(s)-1:
if dic[s[i]]>=dic[s[i+1]]:
result = result + dic[s[i]]
else:
result = result + (dic[s[i+1]]-dic[s[i]])
i = i + 1
else:
result = result + dic[s[i]]
i = i + 1
return result