思路:递归
- 如果左边的数字比右边的数字小,那么就说明左边的那个数字必然要取负值
- 如果左边的数字比右边的数字大,那么说明是正常的,往上加就行了
- 每个字符串,判断第一个字符和第二个字符的大小关系,确定第一个字符的正负即可
- 重复判断的过程,形成递归
代码:
class Solution:
def __init__(self):
self.roman_dict = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
def romanToInt(self, s: str) -> int:
if len(s) == 1:
return self.roman_dict[s[0]]
if self.roman_dict[s[0]] >= self.roman_dict[s[1]]:
return self.romanToInt(s[1:]) + self.roman_dict[s[0]]
else:
return self.romanToInt(s[1:]) - self.roman_dict[s[0]]