13.罗马数字转整数

思路:通过观察我们发现,只有在遇到特殊情况时,两个字符中左边的字符小于右边的字符,且等于右边的字符代表的数减左边字符代表的数。 比如 CM 等于 1000 - 100,XC 等于 100 - 10

因此,我们将 字符:数值 存在 Roman2Int 的哈希表中。然后从左到右遍历每个字符,如果 s[i] < s[i+1],就将结果减去 s[i] 代表的数字;否则,将结果加上 s[i] 代表的数字

class Solution:
    def romanToInt(self, s: str) -> int:
        str1 = {'I':1,  'V':5,  'X':10,  'L':50,  'C':100,  'D':500, 'M':1000}
        length = len(s)
        result = 0
        #遍历至倒数第二个,因为不可能还有数字能和最后一个做比较
        for i in range(length - 1):
            if str1[s[i]] < str1[s[i + 1]]:
                result -= str1[s[i]]
            else:
                result += str1[s[i]]
        return result + str1[s[length-1]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值