leetcode--0012/0013--整数罗马数字相互转化

50 篇文章 2 订阅
5 篇文章 1 订阅

具体的题目稍微有点复杂,大家还是到网站上去看一下吧。
整数转罗马数字
罗马数字转整数


整数转罗马数字

       只需要从前往后一点一点看就好了,也就是在字典中查找当前位数对应的罗马数字。比如2134,我们先找2000对应的罗马数字,100对应的罗马数字,30对应的罗马数字,4对应的罗马数字。

class Solution:
    def intToRoman(self, num):
        dict = {1: "I", 2: "II", 3: "III", 4: "IV", 5: "V", 6: "VI", 7: "VII", 8: "VIII", 9: "IX",
                10: "X", 20: "XX", 30: "XXX", 40: "XL", 50: "L", 60: "LX", 70: "LXX", 80: "LXXX", 90: "XC",
                100: "C", 200: "CC", 300: "CCC", 400: "CD", 500: "D", 600: "DC", 700: "DCC", 800: "DCCC", 900: "CM",
                1000: "M", 2000: "MM", 3000: "MMM"}
        num_str = str(num)
        n = len(str(num))
        i = 1
        li = []
        while i <= n:
            tmp = int(num_str[i - 1]) * int("1" + "0" * (n - i))
            if tmp == 0:
                pass
            else:
                li.append(dict[tmp])
            i = i + 1

        ans = "".join(li)
        return ans


罗马数字转整数

       这道题目的关键在于,罗马字母如果可以两个两个一起看,那就不要一个一个看,最后在把得到的数相加就可以了。

class Solution:
    def romanToInt(self, s: str) -> int:
        dict = {"I":1,"IV":4,"V":5,"IX":9,"X":10,"XL":40,"L":50,"XC":90,"C":100,"CD":400,"D":500,"CM":900,"M":1000}
        num = []
        while s != "":
            if s[:2] in dict:
                num.append(dict[s[:2]])
                s = s[2:]
            else:
                num.append(dict[s[0]])
                s = s[1:]
        #print(num)
        return sum(num)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值