题目
思路
- 首先将所有的组合可能性列出并添加到哈希表中
- 然后对字符串进行遍历,由于组合只有两种,一种是 1 个字符,一种是 2 个字符,其中 2 个字符优先于 1 个字符
- 先判断两个字符的组合在哈希表中是否存在,存在则将值取出加到结果 ans 中,并向后移2个字符。不存在则将判断当前 1 个字符是否存在,存在则将值取出加到结果 ans 中,并向后移 1 个字符
- 遍历结束返回结果 ans
class Solution:
def romanToInt(self, s: str) -> int:
char_2_num = {'I':1, 'V':5, 'X':10, 'L':50,
'C':100, 'D':500, 'M':1000}
integer = 0
i = 0
while i < len(s):
if i + 1 < len(s) and char_2_num[s[i]] < char_2_num[s[i + 1]]:
integer += (char_2_num[s[i + 1]] - char_2_num[s[i]])
i += 2
else:
integer += char_2_num[s[i]]
i += 1
return integer