Leetcode_No.13 Roman to Integer

自己的解题思路:

  枚举出Roman字符的总数,包括单独的,与组合的(IV)这种的,然后从给出的字符串中统计出Roman字符的总数,计算出对应的Integer值

  刚刚开始使用for循环来遍历,后面改进用列表解析来算最后的总值

 

涉及到的python知识点:

  str的replace(s1,s2)用法:用""空字符替换到匹配到的Roman字符

  str的count(s)用法:统计s出现的总数

  列表解析

  sum()函数

 代码:

        str = s
        symbol_single_list = ["I","V","X","L","C","D","M"]
        symbol_single_dic = {'I':[1,0],'V':[5,0],'X':[10,0],'L':[50,0],'C':[100,0],'D':[500,0],'M':[1000,0]}
        symbol_mul_dic = {'IV':[4,0],'IX':[9,0],'XL':[40,0],'XC':[90,0],'CD':[400,0],'CM':[900,0]}
       
        for i in symbol_mul_dic.keys():
            if i in str:
                symbol_mul_dic[i][1] = str.count(i)
                str = str.replace(i,"")
               
           
        for i in symbol_single_dic.keys():
            if i in str:
                symbol_single_dic[i][1] = str.count(i)
                str = str.replace(i,"")

       
        total = sum([i[0]*i[1] for i in symbol_mul_dic.values()]) + sum([i[0]*i[1] for i in symbol_single_dic.values()])
           
        return total

   

 

转载于:https://www.cnblogs.com/lxia003/p/10395671.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值