LeetCode #13. Roman to Integer-Easy

本文详细介绍了如何将罗马数字转换为阿拉伯数字的算法实现,包括特殊数字如4和9的处理方式,通过创建特殊列表和字典来简化转换过程,同时提供了一种更简洁的解决方案,通过替换特殊罗马数字字符串来提高转换效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

罗马数字转为普通数字表示,其中需要注意的是特殊数字的表示方法,比如和4,9相关的表示方法,因为都是非单个字符表示,如果遍历转换会出现麻烦

speciallist——特殊的罗马数字列表

valuedic——罗马数字与普通数字对应关系的字典

步骤:1.排查是是否有speciallist中的内容,有就记录下位置,通过valuedic得出对应的数字

           2.将speciallist之外的罗马数字按照valuedic进行转换

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        speciallist=['IV','IX','XL','XC','CD','CM']
        valuedic={'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}
        rval=0
        indexlist=[]
        for i in range(len(speciallist)):
            if s.find(speciallist[i])>=0:
                indexlist.append(s.index(speciallist[i]))
                rval+=valuedic[speciallist[i]]
                indexlist.append(s.index(speciallist[i])+1)
         
        for i in range(len(s)):
            if i in indexlist:
                continue
            rval+=valuedic[s[i]]
        return rval


 Discussion中看到别人的一个solution,比我的要简洁很多,特殊可以全部找出来后进行特殊处理,也可以将特殊找出来普通化后一起处理

class Solution:
    def romanToInt(self, s: str) -> int:
        translations = {
            "I": 1,
            "V": 5,
            "X": 10,
            "L": 50,
            "C": 100,
            "D": 500,
            "M": 1000
        }
        number = 0
        s = s.replace("IV", "IIII").replace("IX", "VIIII")
        s = s.replace("XL", "XXXX").replace("XC", "LXXXX")
        s = s.replace("CD", "CCCC").replace("CM", "DCCCC")
        for char in s:
            number += translations[char]
        return number
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值