-
代码:
class Solution: def intToRoman(self, num: int) -> str: #(key:value) digits = [(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_digits = [] for values, symbol in digits: if num == 0: break count, num = divmod(num, values) #count为整除后的数字,num为取模,即余数 roman_digits.append(symbol * count) return "".join(roman_digits)
-
思路:
这里的算法是贪心的, 首先将标准的几个转换和刘哥特殊的转换以键值对的形式存在列表中,然后开始循环,将key和形参传入divmod函数,然后计算的模重新复制给num, 然后将整除后的结果赋给count,因为它代表value在列表中出现的次数,比如2000,整除1000后等2,所以M出现两次。
-
复杂度:
- 时间复杂度:O (1)
- 空间复杂度:O (1)
LeetCode0012整数转罗马数字
最新推荐文章于 2024-06-03 16:44:03 发布