【LeetCode 12】整数转罗马数字

如果这题按照正向的求解则非常麻烦。例如对于3749这个数字,你需要判断是千分位,还是百分位,还是十分位,还是个位?然后再判断数字大小进行组合,这么一通操作下来非常繁琐。但如果采取逆向思维解题,即按照从大到小的顺序将所有的组成成分排序,这样就能直接映射出答案了。这题背后有贪心的味道。

1. 题目

2. 分析

3. 代码

class Solution:
    def intToRoman(self, num: int) -> str:
        num2roman = {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"}
        components = list(num2roman.keys())
        components.sort() # 从小到大的排序

        res = ""
        for i in reversed(components):
            while num >= i:
                res += num2roman[i]
                num -= i
        return res      

相关推荐

  1. [LeetCode] 12. 整数罗马数字

    2024-06-16 03:32:03       46 阅读
  2. [leetcode] 12. 整数罗马数字

    2024-06-16 03:32:03       195 阅读
  3. LeetCode 12整数罗马数字

    2024-06-16 03:32:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 03:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 03:32:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 03:32:03       82 阅读
  4. Python语言-面向对象

    2024-06-16 03:32:03       91 阅读

热门阅读

  1. c++处理字符串

    2024-06-16 03:32:03       32 阅读
  2. *args和**kwargs这个在python中的意思

    2024-06-16 03:32:03       29 阅读
  3. Qt事件处理和传递流程

    2024-06-16 03:32:03       29 阅读
  4. springboot事务管理的机制是什么

    2024-06-16 03:32:03       24 阅读
  5. datalist 是什么?

    2024-06-16 03:32:03       26 阅读
  6. 026、工具_redis-server

    2024-06-16 03:32:03       32 阅读