主要思路:
用字典存储罗马数字
d = {‘I‘:1,‘V‘:5,‘X‘:10,‘L‘:50,‘C‘:100,‘D‘:500,‘M‘:1000}
在读取字符串时,若左边的字符串小于右边,则将该字符所代表的数字变为负数,否则则为正数。将每个字符所代表的数字相加即可。
class Solution: def romanToInt(self, s: str) -> int: d = {‘I‘:1,‘V‘:5,‘X‘:10,‘L‘:50,‘C‘:100,‘D‘:500,‘M‘:1000} if len(s) == 1: return d[s[0]] ans = 0 for i in range(len(s)-1): if d[s[i]] < d[s[i+1]]: ans -= d[s[i]] else: ans += d[s[i]] ans += d[s[-1]] return ans
踩到的坑:最开始没有用字典存储导致代码比较冗长。另外对字典的使用不太熟练,字典要按键值进行取值。(此外,键值必须是不可变的,所以键值可以是数字、字符串或者元组,但是一定不能为列表!)
原文:https://www.cnblogs.com/shawn-young/p/12396092.html