1、题目如下:
2、个人Python代码实现:
虽然前面刚刷了整数转罗马数字,而且本题难度为简单,实际上做出来还是花了很多时间,不亚于前面整数转罗马数字。
以上的思路,主要是声明一个列表temp,然后遍历字符串s,找到字符串中所有字符在字典中所对应的值,将值加入列表temp。这里有一个点在于,如果是“IV”、“IX”这种字符串,生成的列表会分别是[1,5]、[1,10],这里分别对应4和9,也可以理解为-1+5,-1+10.所以当列表temp中的元素小于后面的元素时,应该是减去当前元素,再加上后面的元素,就可以达成一样的效果。 以上的主要思路在于,不再是将类似IV转换成IIII,而是因为其升序,先减再加是一样的效果。以下附带自己调试的代码:
strs = ["III","IV", "IX", "LVIII", "MCMXCIV"]
dic = {"I": 1,
"IV": 4,
"V": 5,
"IX": 9,
"X": 10,
"XL": 40,
"L": 50,
"XC": 90,
"C": 100,
"CD": 400,
"D": 500,
"CM": 900,
"M": 1000}
res = 0
temp = []
for s in strs:
for str in s:
temp.append(dic[str])
for i in range(len(temp)):
try:
if temp[i] < temp[i + 1]:
res -= temp[i]
else:
res += temp[i]
except:
res += temp[i]
print(res)
res = 0
temp = []