LeetCode12. 整数转罗马数字

LeetCode12. 整数转罗马数字

LeetCode12. 整数转罗马数字
LeetCode12. 整数转罗马数字

贪心算法

贪心法则:我们每次尽量使用最大的数来表示。

字典:

class Solution:
    def intToRoman(self, num: int) -> str:
        # 使用字典,从大到小记录所有的整数-罗马数字的键值对
        dic = {
        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'
        }
        ans = ''
        for key in dic:
            if num // key != 0:
                count = num // key  
                ans += dic[key] * count 
                num %= key
        return ans

LeetCode12. 整数转罗马数字

列表:

class Solution:
    def intToRoman(self, num: int) -> str:
        symble = [
            (1,'I'),
            (4,'IV'),
            (5,'V'),
            (9,'IX'),
            (10,'X'),
            (40,'XL'),
            (50,'L'),
            (90,'XC'),
            (100,'C'),
            (400,'CD'),
            (500,'D'),
            (900,'CM'),
            (1000,'M')
            ]
        #因为这里没有从大到小排列,所以做一个列表反转
        symble = symble[::-1]
        roman = []
        for i,char in symble:
            while num >= i:
                num -= i
                roman.append(char)
            if num == 0:
                break
        return ''.join(roman)
上一篇:Python - Get leaves count in a dictionary


下一篇:Python 中的 “jieba库”