题目:给定一个罗马数字,将其转为整数。输入确保在1到3999范围内。
字符 数值I 1V 5X 10L 50C 100D 500M 1000
例:
输入: "III"
输出: 3
输入: "IV"
输出: 4
输入: "IX"
输出: 9
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
题解:
一、哈希表
def romanToInt(self, s: str) -> int:
d = {'I':1, 'IV':3, 'V':5, 'IX':8, 'X':10, 'XL':30, 'L':50, 'XC':80, 'C':100, 'CD':300, 'D':500, 'CM':800, 'M':1000}
return sum(d.get(s[max(i-1, 0):i+1], d[n]) for i, n in enumerate(s))
作者:QQqun902025048
链接:https://leetcode-cn.com/problems/roman-to-integer/solution/2-xing-python-on-by-knifezhu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
知识点:
sum(),输入list求和。
sum(i for i in range(5))=0+1+2+3+4=10
dict.get(key,default)
d.get('VI',6)=6
哈希表(Hash Map)
哈希表存储的是由键(key)和值(value)组成的数据。例如,我们将每个人的性别作为数据进行存储,键为人名,值为对应的性别。Python 中我们使用字典 {key : value} 来初始化哈希表。
通过 key 查找 value 的时间复杂度为 。
这题题解中的 d 就是一个字典,其中 get(key, default) 函数可以通过 key 从 d 中找出对应的值,如果 key 不存在则返回默认值 default。
**
