13. 罗马数字转整数
-
题号:力扣13
-
知识点:哈希 字符串替换
-
目标完成度:6/150
-
总结
个人思路:- 1.实际上就是一个字符替换问题。把罗马字符替换成整数,涉及字符替换的都可以用字典,核心是建立一种映射关系。
- 2.这个题中给出了六种特殊情况,需要在建立映射关系后再加一步处理。
- 3.观察这六种特殊情况,都是当前面的数比后面的数小时才会触发,所以以此为条件加个if判断处理这类特殊情况即可
- 4.实现方法:第一次遍历把罗马字符换成int型的整数存在list中
- 5.第二次遍历将list中的整数相加,同时注意处理特殊情况
class Solution: def romanToInt(self, s: str) -> int: dict_ = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000} int_list = [] for i in s: int_list.append(dict_[i]) last = int_list[0] ret = 0 for i in int_list: temp = last last = i if temp < i: i = i - 2*temp ret += i return ret ```
其他解法参考:罗马数字转整数