罗马数字转化作业
源代码如下:
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
# 使用整数转罗马数的两个列表
num_tuple = [1000, 500, 100, 50, 10, 5, 1]
roman_tuple = ['M', 'D', 'C', 'L', 'X', 'V', 'I']
# 使用dict和zip方法是其转为字典 格式为:{'M': 1000, 'X': 10, 'L': 50, 'D': 500, 'C': 100, 'V': 5, 'I': 1}
merge_dic = dict(zip(roman_tuple, num_tuple))
# 记录最后的结果值
num = 0
# 因为类似IV这样的需要比较两者之间的值,所以只取到len(s)-1,
for i in range(len(s)-1):
# 判断第i个数的值是否小于第i+1个数的值,是的话减去第i个数的值
if merge_dic[s[i]] < merge_dic[s[i+1]]:
num -= merge_dic[s[i]]
# 不是的话加上第i个数的值
else:
num += merge_dic[s[i]]
# 这是加最后一个数的值
num += merge_dic[s[-1]]
return num
if name == 'main':
s = Solution()
print(s.romanToInt("IV"))