Leetcode13-Roman to Integer(Python3)

13. Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

My Solution

"""
I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)
罗马数字一共有 7 个数字符号:I、V、X、L、C、D、M。用罗马数字表示数时、
如果几个相同的数字并列、就表示这个数的值是数码的几倍。
例如:罗马数字要表示 3、可以写成 Ⅲ;要表示 20,可以写成 XX;要表示 30、可写成 XXX。
不相同的几个数码并列时,如果小的数码在右边,就表示数的数值是这几个数码的和;
如果小的数码在左边,就表示数的数值是数码之差。
"""
class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        sum, roman_dict = 0, {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        if len(s) == 1:
            return roman_dict[s[0]]
        for i in range(len(s)-1):            
            if roman_dict[s[i]] < roman_dict[s[i+1]]:
                sum -= roman_dict[s[i]]
            else:
                sum += roman_dict[s[i]]
        return sum + roman_dict[s[-1]]

你可能感兴趣的:(Leetcode13-Roman to Integer(Python3))