leetcode之Roman to Integer(13)

本文提供了一种将罗马数字转换为整数的方法,并通过Python代码实现了这一转换过程。重点介绍了罗马数字的基本规则及其与整数之间的转换逻辑。

题目:给定一个罗马数字,将其转换成整数。返回的结果要求在 1 到 3999 的范围内。

python代码:

class Solution:
    def romanToInt(self, s):
        sum = 0
        
        convert = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        for i in range(len(s)-1):
            if convert[s[i]] < convert[s[i+1]]:
                sum -= convert[s[i]]
            else:
                sum += convert[s[i]]
        return sum + convert[s[-1]]
心得:刚看到这道题是没有思路的,因为从来没太关注过罗马数字,更不知道如何与整数转换,看完规则之后,此题基本得到解决,需要注意的一点是在遍历s的时候,要遍历到倒数第二个,否则会发生越界错误,因为如果i可以是最后一个元素的话,在执行if语句的时候i+1位置不存在。另外,知道了罗马数字好复杂。o(* ̄︶ ̄*)o


备注:罗马数字与整数的转换规则:

罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1510501005001000,在构成数字的时候,有下列规则:

1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3

2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12

3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9

4、正常使用时,连写的数字重复不得超过三次。

版权声明:本文为博主原创文章,未经允许不得转载。https://blog.youkuaiyun.com/cuicheng01/article/details/79835374

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值