def romanToInt(self, s: str) -> int:
num = 0
lst = ["I","V","X","L","C","D","M"]
dict = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
for i in range(len(s)):
if lst.index(s[i]) >= lst.index(s[i+1]) or i == len(s)-1:
num = num + dict[s[i]]
else:
num = num - dict[s[i]]
return num
字符串
这是我的代码转换罗马数字整数
程序触发此错误
IndexError:字符串索引超出范围
6号线
2条答案
按热度按时间dffbzjpn1#
字符串
这个错误是因为当
i
等于len(s)-1
时,你试图在循环中访问s[i+1]
。此时,s[i+1]
超出了字符串的边界,导致IndexError。piv4azn72#
一个简单的解决方案是改变:
字符串
到
型
因为你首先检查
i == len(s) - 1
,如果它是True,它不会执行另一部分,你不会得到索引错误。作为替代方案,您可以在字典中使用这些特殊数字(例如
'IV'
,'IX'
,'XL'
,'XC'
,'CD'
,'CM'
)并将其重写为:型
romanToInt
)。dict
)。