Python3_Leetcode #13 罗马数字转整数题解

思路:

  当小的罗马数字放在大的罗马数字左边时,可相当于做减法,因为不会出现乱放的现象(即输入遵循罗马数字规则)所以可以直接判断后一位来决定做不做减法。

 

将代表的罗马数字与数字放入一个字典

1. 循环取出字符,判断当前位和后一位所代表数字的大小关系,循环长度为原长度-1,因为最后一位找不到后一位

2.如果当前位较大,则直接加当前位代表的数字

3.如果当前位较小,则直接减当前位代表的数字

4. 结果加上最后一位所代表的数字,则为所得

 

 

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900

 

 

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


        result += condition[s[-1]]  #这一步不要漏

        return result
posted @ 2021-07-08 23:36  lms21  阅读(37)  评论(0)    收藏  举报