0
点赞
收藏
分享

微信扫一扫

python 整数转罗马数字 多种解法

解法一:硬编码

def int_to_roman(num):
    val = [
        1000, 900, 500, 400,
        100, 90, 50, 40,
        10, 9, 5, 4,
        1
        ]
    syb = [
        "M", "CM", "D", "CD",
        "C", "XC", "L", "XL",
        "X", "IX", "V", "IV",
        "I"
        ]
    roman_num = ''
    i = 0
    while  num > 0:
        for _ in range(num // val[i]):
            roman_num += syb[i]
            num -= val[i]
        i += 1
    return roman_num

解法二:贪心算法

def int_to_roman(num):
    roman_numeral_map = [
        (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')
        ]
    roman_num = ''
    while num > 0:
        for i, r in roman_numeral_map:
            while num >= i:
                roman_num += r
                num -= i
    return roman_num

举报

相关推荐

0 条评论