题目:见图片
程序:
class Solution:
def romanToInt(self, s):
result = 0
numeral_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
# 设置一个字典,用于查询每个字母对应的数字
'''
从i=0位开始,判断当前位(i位)与前一位(i-1位)的大小
如果当前位小于前一位,则当前位+前一位
如果当前位大于前一位,则当前位-2*前一位
s = 'MCMXCIV'
i=0时result=M
i=1时result=M+C
i=3时resul=(M+C)+(M-2C)
'''
for i in range(len(s)):
if i > 0 and numeral_map[s[i]] > numeral_map[s[i - 1]]:
result = result + numeral_map[s[i]] - 2 * numeral_map[s[i - 1]]
else:
result = result + numeral_map[s[i]]
return result
if __name__ == '__main__':
sol = Solution()
s = 'MCMXCIV'
print(sol.romanToInt(s))