leetcode_13. 罗马数字转整数python

完整代码及注释:

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        //这里把罗马数字转化成汉字形式使用字典的键值对模式
        a = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
        //ans参数存储转化的结果
        ans = 0
        //遍历这个字符串
        for i in range(len(s)):
            if i < len(s)-1 and a[s[i]]<a[s[i+1]]:
                ans-=a[s[i]]
            else:
                ans += a[s[i]]
        return ans

例如:输入的是‘IV’罗马数字4:
第一次循环得到的结果是:0-1=-1
第二次循环得到的结果是:-1+5=4,得到结果

几个小知识点

字典的使用:
字典使用的是键值对形式:
1.字典中键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
2.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
这种写法会出错

dict = {['Name']: 'liumh', 'Age': 18}

3.报错的一次这行代码是这样写的a = {'I':'1', 'V':'5', 'X':'10', 'L':'50', 'C':'100', 'D':'500', 'M':'1000'}
在判断ans-=a[s[i]]这句代码时就会报字符串和整型不可以做运算,原因就是键给设置成了字符串类型,而我们需要的是整数类型,这时把每个键的值改为整型就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值