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

浙公网安备 33010602011771号