LeetCode13题,不会罗马数字的连编程都不行哈哈
思路:正常情况下是左减右加,但是右加的情况最少,且只能左减一次,故我们判断该位是否大于右边一位。由于每一次都和右边一位比较了,所以在循环是将循环的范围向前提一个,在循环最末尾不用判断直接加一个。(也是我第一次使用字典哈哈)
代码:
class Solution:
def romanToInt(self, s: str) -> int:
a={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
res=0
for i in range(len(s)-1):
if a[s[i]]>=a[s[i+1]]:
res=res+a[s[i]]
else:
res=res-a[s[i]]
return res+a[s[-1]]