class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
s = {1:'I',2:'II',3:'III',5:'V',6:'VI',7:'VII',8:'VIII',10:'X',50:'L',100:'C',500:'D',1000:'M',4:'IV',9:'IX',40:'XL',90:'XC',400:'CD',900:'CM'}
result = ""
while(num>0):
#如果是三位数以下:
if(num//1000==0):
for i in [900,500,400,100,90,50,40,10]:
while(num>=i):
shang = num // i
result += s[i]*shang
num = num - i*shang
if(num!=0):
result += s[num]
break
else:
shang = num // 1000
num = num - shang*1000
result += 'M'*(shang)
return result
大致思路是:
1.如果num>=1000,则加n个'M'字符
2.如果num<1000,去哈希表中由高到低判断含有的最大值,并加n个s[i]字符。
3.一直到num属于1-9的范围内,进行最后处理,跳出循环。