LeetCode419罗马数字转整数python

描述

给定一个罗马数字,将其转换成整数。

输入数据保证返回的结果1到3999的范围内。

难点:
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。
则特列数字有4,9,40,90,400,900。
来自答案区

class Solution:
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        a = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
        ans=0
        for i in range(len(s)):
            if i<len(s)-1 and a[s[i]]<a[s[i+1]]:
                ans-=a[s[i]]
            else:
                ans+=a[s[i]]
        return ans
c=Solution()
d=c.romanToInt("IV")
print(d)

结果:4

解释说明:
特列情况下:如输入“IV”
(1)首先ans=0
(2)传进去 I,判断出a[s[i]]<a[s[i+1]]
ans-1=-1
(3)传进去V,函数进入else
ans=ans+5
(4)返回ans=4

猜你喜欢

转载自blog.csdn.net/kobeyu652453/article/details/106644096