LeetCode in Python3 | 13. 罗马数字转整数

LeetCode in Python3 | 13. 罗马数字转整数

    • 解法1:Roman_Map

解法1:Roman_Map

本题的思路很简单,即创建一个映射表,将罗马字母对应相应的阿拉伯数字,然后遍历字符串,比较前后两位罗马数字的大小,最后求和。

class Solution:
    def romanToInt(self, s: str) -> int:
        lookup = {
     
            'I':1,
            'V':5,
            'X':10,
            'L':50,
            'C':100,
            'D':500,
            'M':1000
        }
        result = 0
        for i in range(len(s)):
        	if i > 0 and lookup[s[i]] > lookup[s[i-1]]:
        		result += lookup[s[i]] - 2 * lookup[s[i-1]]
        	else:
        		result += lookup[s[i]]
        return result

这个下面这个答案,是我在第一次解题时,出现了 index out of range 后,修改后的,思路有些奇怪;

class Solution:
    def romanToInt(self, s: str) -> int:
        lookup = {
     
            'I':1,
            'V':5,
            'X':10,
            'L':50,
            'C':100,
            'D':500,
            'M':1000
        }
        result = 0
        for i in range(len(s)):
            if i > 0 and lookup[s[i-1]] < lookup[s[i]]:
                result += -lookup[s[i-1]]
            else:
                result += lookup[s[i-1]]
        return result

你可能感兴趣的:(LeetCode,in,Python,LeetCode,罗马数字转整数)