力扣12题——蓝桥杯每日一练

#题目(本题较为简单)

七个不同的符号代表罗马数字,其值如下
    符号  值
    I   1
    V   5
    X   10
    L   50
    C   100
    D   500
    M   1000
    罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则:【此处省略可去官网查看】
 

#注意点

1. 本题中,应对自己的思路有把握,不能因为一时没有想到用过的算法而气馁

2. 代码中,当返回值有多个时,可用join处理

3. 对类的不善使用,导致遍历字典时出错

#代码

class Solution:
    VALUE_SYMBOLS = [
        (1000, "M"),
        (900, "CM"),
        (500, "D"),
        (400, "CD"),
        (100, "C"),
        (90, "XC"),
        (50, "L"),
        (40, "XL"),
        (10, "X"),
        (9, "IX"),
        (5, "V"),
        (4, "IV"),
        (1, "I"),
    ]

    def intToRoman(self, num: int) -> str:
        roman = list()
        for value, symbol in Solution.VALUE_SYMBOLS:
            while num >= value:
                num -= value
                roman.append(symbol)
            if num == 0:
                break
        return "".join(roman)


a = Solution()
print(a.intToRoman(3455))

#结果

MMMCDLV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值