今天做了一个新题是罗马数字转整数,本来以为这个题跟他的上一题一样很简单,但是思考了半天没搞清楚其中的规律,看了题解恍然大悟,所以记录一下。
总体来说,这个题的核心规律就是输入的顺序,输入的左边的罗马数字比右边的罗马数字大的时候就做加法,否则做减法,然后逐位循环往后遍历。
具体实现过程如下:
class Solution(object):
def romanToInt(self, s: str) -> int:
maps = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
r = 0
for i in range(len(s)-1):
if maps[s[i]] >= maps[s[i+1]]:
r += maps[s[i]]
#print(r)
else:
r -= maps[s[i]]
#print(r)
# print(r+maps[s[-1]])
return r+maps[s[-1]]
1368

被折叠的 条评论
为什么被折叠?



