LeetCode12 整数转罗马数字 Python3

编程入门 行业动态 更新时间:2024-10-06 18:28:59

LeetCode12 整数转<a href=https://www.elefans.com/category/jswz/34/1728649.html style=罗马数字 Python3"/>

LeetCode12 整数转罗马数字 Python3

1、自己的想法,存储部分表达方式,直接拿过来用

1-10,10-100,100-1000,1000-3000

class Solution:def intToRoman(self, num: int) -> str:stor1=['I','II','III','IV','V','VI','VII','VIII','IX','X']stor2=['X','XX','XXX','XL','L','LX','LXX','LXXX','XC','C']stor3=['C','CC','CCC','CD','D','DC','DCC','DCCC','CM','M']stor4=['M','MM','MMM']result=[]while(num > 0):if(num >= 1000):ind = num//1000result.append(stor4[ind-1])num = num % 1000elif(num >= 100):ind = num//100result.append(stor3[ind-1])num = num % 100elif(num >= 10):ind = num//10result.append(stor2[ind-1])num = num % 10else:result.append(stor1[num-1])num = 0return "".join(result)

优化:

class Solution:def intToRoman(self, num: int) -> str:stor1=['','I','II','III','IV','V','VI','VII','VIII','IX','X']stor2=['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC','C']stor3=['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM','M']stor4=['','M','MM','MMM']result = stor4[num//1000] + stor3[(num%1000)//100] + stor2[(num%100)//10] + stor1[num%10]return result

2、官方的贪心算法

由大到小进行排查,顺便学习一下代码

class Solution:def intToRoman(self, num: int) -> str:# List中为元组NumSymbols=[(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")]result=[]# 取出元组的内容for value, symbol in NumSymbols:if(num == 0):break# divmod() 把除数和余数运算结果结合起来 count=num//value  num=num%valuecount, num = divmod(num, value)result.append(symbol*count)return "".join(result)

更多推荐

LeetCode12 整数转罗马数字 Python3

本文发布于:2024-03-04 11:29:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1709152.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:罗马数字   整数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!