美文网首页
Leetcode13-Roman to Integer(Pyth

Leetcode13-Roman to Integer(Pyth

作者: LdpcII | 来源:发表于2017-09-19 18:07 被阅读0次

    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(Pyth

          本文链接:https://www.haomeiwen.com/subject/eilgsxtx.html