leetcode 第13题目(罗马数字转换成整数)

173 阅读1分钟

给定一个罗马数字表示的字符串,将其转换成对应的整数

转换规则太长,略

例:

输入:"IV" 返回: 4

输入:"IX" 返回: 9

输入:"LVIII" 返回:58


解法:

class Solution:
    def romanToInt(self, s: str) -> int:
        t = 0
        d = {'I':1,'V':5, 'X':10,'L':50, 'C':100, 'D':500, 'M':1000}
        i = 0
        lengh = len(s)
        while i < lengh:
            ss = s[i:i+2]
            if ss:
                if len(ss) > 1 and (d[ss[0]] < d[ss[1]]):
                    t += d[ss[1]] - d[ss[0]]
                    i += 2
                else:
                    t += d[ss[0]]
                    i += 1
        return t


每次截取两个字符,

1.如果取到两个字符

a.第一个字符小于第二个字符,则此字符串的值为 两字符表示的整数之差(第二个字符减第一个字符)

b.第一个字符大于等于第二个字符,则第一个字符可以直接转换为对应的整数值加到结果中

2.如果只取到一个字符

则直接转换该字符对应的整数值即可