我的解法就是用字典,根据题意做一个数字与对应罗马字母的映射,再分别把每位上的数取出来对着找,最后结果用字符串拼起来:
class Solution:
def intToRoman(self, num: int) -> str:
dic = {0:'',1:'I',2:'II',3:'III',4:'IV',5:'V',6:'VI',7:'VII',8:'VIII',9:'IX',10:'X',
20:'XX',30:'XXX',40:'XL',50:'L',60:'LX',70:'LXX',80:'LXXX',90:'XC',100:'C',
200:'CC',300:'CCC',400:'CD',500:'D',600:'DC',700:'DCC',800:'DCCC',900:'CM',
1000:'M',2000:'MM',3000:'MMM'}
#if num in dic:
#return dic[num]
strn = str(num)
n = len(strn)
res = ''
for i in range(n):
res += dic[int(strn[i])*10**(n-i-1)]
return res
效率一般,内存消耗较大: