先上自己写的代码
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
也像个自动机
"""
list_re=[]
dict_Roman={
0:['','','',''],
1:['I','X','C','M'],
2:['II','XX','CC','MM'],
3:['III','XXX','CCC','MMM'],
4:['IV','XL','CD'],
5:['V','L','D'],
6:['VI','LX','DC'],
7:['VII','LXX','DCC'],
8:['VIII','LXXX','DCCC'],
9:['IX','XC','CM']}
bit=0
while num>0:
list_re.append(dict_Roman[num%10][bit])
bit+=1
num=num/10
return ''.join(list_re[::-1])
官方给的题解思路在于贪心,其实昨天是能想到的,但是当时是想把‘4’和‘9’都贪心进‘5’和‘10’里边失败了。再写一遍
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
也像个自动机
"""
list_re=[]
list_Roman=[
[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 i in range(len(list_Roman)):
while num>=list_Roman[i][0]:
list_re.append(list_Roman[i][1])
num-=list_Roman[i][0]
return ''.join(list_re)