LeetCode | 13.罗马数字转整数

作者 : admin 本文共444个字,预计阅读时间需要2分钟 发布时间: 2024-06-9 共2人阅读

LeetCode | 13.罗马数字转整数插图
LeetCode | 13.罗马数字转整数插图(1)

LeetCode | 13.罗马数字转整数插图(2)

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        result = 0

        dict = {
            'I': 1,
            'V': 5,
            'X': 10,
            'L': 50,
            'C': 100,
            'D': 500,
            'M': 1000
        }

        for i in range(len(s)-1):
            if dict[s[i]] < dict[s[i + 1]]:
                result -= dict[s[i]]
            else:
                result += dict[s[i]]
        result += dict[s[-1]]

        return result

这道题其实比较好理解,通常情况下,罗马数字中小的数字在大的数字的右边,一般来说有几个罗马数字就对应加相应的数字几次,但是也有特例,比如题目中提到的特殊的规则

LeetCode | 13.罗马数字转整数插图(3)
一开始我想着枚举出所有可能出现的枚举组合,但是转念一想,组合似乎有点多,而且想复杂了,这种特殊的情况其实就是代表小的数在代表大的数字的后面,呈现出了一种逆序的关系,只要顺序就直接相加,逆序就减掉那个小的,再加上大的就ok了

LeetCode | 13.罗马数字转整数插图(4)

本站无任何商业行为
个人在线分享 » LeetCode | 13.罗马数字转整数
E-->