题目:给定一个罗马数字,将其转为整数。输入确保在1到3999范围内。

    1. 字符 数值
    2. I 1
    3. V 5
    4. X 10
    5. L 50
    6. C 100
    7. D 500
    8. M 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 的时间复杂度为 No.13 罗马数字转整数 - 图1
    这题题解中的 d 就是一个字典,其中 get(key, default) 函数可以通过 key 从 d 中找出对应的值,如果 key 不存在则返回默认值 default。

    **