13.罗马数字转整数

    xiaoxiao2022-07-07  164

    每日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,比较快

    最新回复(0)