循环计算
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
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"),
]
roman = ""
for n, c in dict:
while num >= n:
roman += c
num -= n
if num == 0:
break
return roman
硬编码数字
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
Thousands = ["", "M", "MM", "MMM"]
Hundreds = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
Tens = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
Ones = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
return Thousands[num // 1000] + Hundreds[num // 100 % 10] + Tens[num // 10 % 10] + Ones[num % 10]
总结
1、方法一列出所有出现的罗马字符,通过循环计算输出字符顺序。注意所有字符中包括“IV=4,IX=9”这样的字符。
2、硬编码数字方法:将各个十进制的数字位,用罗马字符分别表示出来,直接输出即可。由于输出的是字符,可以输出return A+B+C为返回值,使代码更简洁。