题目

image.png
image.png

思路

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