题目:
leetcode12题目描述解法:
- 构建罗马数字与整数对应的字典,包含所有的情况(6种特殊规则:4、9、40、90、400、900)。注意:字典一定要从大到小排列,不然会出现4=IIII 而不是4=IV。
- 遍历字典,我们用待转换整数除以字典的key,并向下取整,注意是//,得到对应位数的值,进而得到该位对应的罗马数字。重新赋值待转换整数,新待转换整数=待转换整数-key * 整除得到的值。比如258,当遍历到key为100时,整数值为2,我们循环展示两个100对应的value。下一次循环时,待转换整数变成258-100*2=58。反复上述过程。
具体代码如下:
class Solution:
def intToRoman(self, num: int) -> str:
res = ''
dict = {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"}
for key,value in dict.items():
quo = num//key # 整除得到商
if quo != 0:
res += quo* value
num = num - quo*key
return res
网友评论