class Solution:
def romanToInt(self, s: str) -> int:
#符号映射到数字
dict = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
res = 0
for i in range(len(s)):
if i+1 < len(s) and dict[s[i]] < dict[s[i+1]]:
res -= dict[s[i]]
else:
res += dict[s[i]]
return res
先将s转换成相应数字,再比较,省去了查dict的时间,速度更快
class Solution:
def romanToInt(self, s: str) -> int:
dict = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
nums = [0] * len(s)
for i in range(len(s)): #转换成数字
nums[i] = dict[s[i]]
res = 0
for i in range(len(s)):
if i+1 < len(s) and nums[i] < nums[i+1]:
res -= nums[i]
else:
res += nums[i]
return res