每日leetcode(6)
13.罗马数字转整数,如下图
我用的python
这道题,一开始的想法是建立一个字典,映射1个符号的罗马符号和特殊符号的罗马符号,然后按两位进行判断,如下
class Solution():
def romanToInt(self,s):
sum=0
i=0
d={}
d=dict(zip(['I','V','X','L','C','D','M','IV','IX','XL','XC','CD','CM'],[1,5,10,50,100,500,1000,4,9,40,90,400,900]))
while i<len(s):
if i==len(s)-1:
sum+=d[s[i]]
break
elif s[i]+s[i+1] in d.keys():
sum+=d[s[i]+s[i+1]]
i+=2
else:
sum+=d[s[i]]
i+=1
if sum in range(1,4000):
return sum
else:
return False
这个方法通过了,但是效率不太高,平均100ms,看评论的大神说
这道题是只要左边的符号值大于右边的,就加上当前值,不然就减去当前值,于是我改了一下
64ms,比较快