当前位置: 首页 > 后端技术 > Python

LeetCode整数转罗马数字

时间:2023-03-26 18:20:08 Python

整数转罗马数字题目来源:https://leetcode-cn.com/problems/integer-to-roman/题目罗马数字包含字符对应的值,如下:字符值I1V5X10L50C100D500M1000罗马数字也有一些特殊的规则:I可以放在V(5)和X(10)的左边,代表4和9。X可以放在L(50)和C(100)的左边表示40和90。C可以放在D(500)和M(1000)的左边,表示400和900。给定一个整数,将其转换为罗马数字。输入保证在1到3999的范围内。示例1:输入:3输出:“III”示例2:输入:4输出:“IV”示例3:输入:9输出:“IX”示例4:输入:58输出:"LVIII"解释:L=50,V=5,III=3。例5:输入:1994输出:"MCMXCIV"解释:M=1000,CM=900,XC=90,IV=4。解题思路定义了整数和罗马数字之间的映射;输入的数字从最高位开始分解。将映射后的键从大到小排列,依次划分键得到对应的罗马数字个数,并相应改变传入整数的值。当传入的值变为0时,遍历结束,返回结果值。代码实现类Solution:defintToRoman(self,num:int)->str:'''将整数转换为罗马数字Args:num:IntegerReturns:返回整数对应的罗马数字'''map_int_roman={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'}result=''#从最高位拆解传入的整数forkeyinsorted(map_int_roman.keys())[::-1]:#key除以整数得到的值用于确定最高位,key值转换对应的罗马数字个数。tmp=num//keyiftmp==0:#表示num