来自北大算法课的Leetcode题解:12. 整数转罗马数字

代码仓库Github | Leetcode solutions @doubleZ0108 from Peking University.

解法1(T88% S48%):没什么技巧的纯流程题,按照题干依次判断,首先先while减去足量的1000,然后判断剩余是否大于900/大于500/大于400,最后再while减去足量的100;然后再判断剩余是否大于90/50/40,然后再while减去足量的10;最后再判断剩余是否大于9/5/4,最终再减去足量的1直到num==0

class Solution(object):
    def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        """
        roman = ""
        while num >= 1000:
            roman += 'M'
            num -= 1000
        if num >= 900:
            roman += 'CM'
            num -= 900
        elif num >= 500:
            roman += 'D'
            num -= 500
        elif num >= 400:
            roman += 'CD'
            num -= 400
        while num >= 100:
            roman += 'C'
            num -= 100
        
        if num >= 90:
            roman += 'XC'
            num -= 90
        elif num >= 50:
            roman += 'L'
            num -= 50
        elif num >= 40:
            roman += 'XL'
            num -= 40
        while num >= 10:
            roman += 'X'
            num -= 10
        
        if num >= 9:
            roman += 'IX'
            num -= 9
        elif num >= 5:
            roman += 'V'
            num -= 5
        elif num >= 4:
            roman += 'IV'
            num -= 4
        while num:
            roman += 'I'
            num -= 1
        
        return roman
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

doubleZ0108

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值