ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode12. 整数转罗马数字

2022-01-21 14:58:00  阅读:152  来源: 互联网

标签:roman symble 罗马数字 整数 dic LeetCode12 num key ans


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

在这里插入图片描述

列表:

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)

标签:roman,symble,罗马数字,整数,dic,LeetCode12,num,key,ans
来源: https://blog.csdn.net/suwuzs/article/details/122534043

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有