题目概述:
题目注意点:
每次和右边数据比较大小,然后确认增加还是减去
如果是MCCC,这里需要确认右边大于左边才可以增加,等于也要减去
解题思路:
完整代码:
class Solution(object):
def romanToInt(self, s):
if not s:
return 0
# 建立罗马数字 到 阿拉伯数字的映射关系
d = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
ans = 0
n = len(s)
# 每次我们都匹配一个字母,注意因为要获取 i+1 位置的字母,所以循环终止条件
# 是字符串的最大长度-1
for i in xrange(n-1):
if d[s[i+1]]>d[s[i]]:
ans -= d[s[i]]
else:
ans += d[s[i]]
# 最后不要忘记收尾操作,把遗留的字母也加上
ans += d[s[n-1]]
return ans
作者:wang_ni_ma
链接:https://leetcode-cn.com/problems/roman-to-integer/solution/zi-ding-yi-hashchao-guo-9997-duo-chong-jie-fa-pei-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。