标签:roman symble 罗马数字 整数 dic LeetCode12 num key ans
LeetCode12. 整数转罗马数字
贪心算法
贪心法则:我们每次尽量使用最大的数来表示。
字典:
class Solution:
def intToRoman(self, num: int) -> str:
# 使用字典,从大到小记录所有的整数-罗马数字的键值对
dic = {
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'
}
ans = ''
for key in dic:
if num // key != 0:
count = num // key
ans += dic[key] * count
num %= key
return ans
列表:
class Solution:
def intToRoman(self, num: int) -> str:
symble = [
(1,'I'),
(4,'IV'),
(5,'V'),
(9,'IX'),
(10,'X'),
(40,'XL'),
(50,'L'),
(90,'XC'),
(100,'C'),
(400,'CD'),
(500,'D'),
(900,'CM'),
(1000,'M')
]
#因为这里没有从大到小排列,所以做一个列表反转
symble = symble[::-1]
roman = []
for i,char in symble:
while num >= i:
num -= i
roman.append(char)
if num == 0:
break
return ''.join(roman)
标签:roman,symble,罗马数字,整数,dic,LeetCode12,num,key,ans 来源: https://blog.csdn.net/suwuzs/article/details/122534043
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。