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

LeetCode罗马数字转整数

时间:2023-03-26 00:28:15 Python

罗马数字转整数题目来源:https://leetcode-cn.com/problems/roman-to-integer/题目罗马数字包含以下七个字符:I,V,X,L,C、D、M字符值I1V5X10L50C100D500M1000例如罗马数字2写成II,就是两个并列的1。12写作XII,即X+II。27写作XXVII,即XX+V+II。通常,罗马数字中较小的数字位于较大数字的右侧。但也有例外,比如4不写成IIII,而是写成IV。数字1在数字5的左边,表示的数字等于数字5减去数字1得到的值4。同理,数字9表示为IX。这个特殊规则只适用于以下六种情况:I可以放在V(5)和X(10)的左边代表4和9X可以放在L(50)和C(100)的左边)表示40和90。C可以放在D(500)和M(1000)的左边,表示400和900。给定一个罗马数字,将其转换为整数。输入保证在1到3999的范围内。示例1:输入:“III”输出:3示例2:输入:“IV”输出:4示例3:输入:“IX”输出:9示例4:输入:"LVIII"输出:58解释:L=50,V=5,III=3。示例5:输入:"MCMXCIV"输出:1994解释:M=1000,CM=900,XC=90,IV=4。解题思路定义了罗马数字和整数之间的映射关系,包括两个字符的组合;遍历代表罗马数字的字符串,先遍历两个字符的组合;判断映射中是否存在这两个字符,如果存在则将值加到result变量中,然后向后移动2个字符。如果不存在,则判断当前字符是否存在,将存在的值加到result变量中,并向后移动一个字符;遍历完成后返回结果。代码实现类Solution:defromanToInt(self,s:str)->int:'''罗马数字转整数args:s:罗马数字字符串返回:返回罗马数字转换后对应的整数例如:输入:"MCMXCIV"return:1994Explanation:M=1000,CM=900,XC=90,IV=4.'''#定义罗马数字和整数的映射,包括两个字符的组合map_roman_int={'I':1,“IV”:4,“V”:5,“IX”:9,“X”:10,“XL”:40,“L”:50,“XC”:90,“C”:100,“CD”':400,'D':500,'CM':900,'M':1000}#用于表示返回结果result=0i=0whilei