gpt4 book ai didi

python - Python 3 中 "String index out of range"的奇怪解决方案 - 无法弄清楚为什么?

转载 作者:行者123 更新时间:2023-12-01 01:40:15 24 4
gpt4 key购买 nike

所以我正在上 MIT 6.00.1 类(class),并且遇到了一个问题集,我必须在随机生成的字符串中识别最长的字母子字符串(例如“abcdtttyyttt”,最长的字母子字符串将为“abcdt”)。

解决问题的代码如下所示:

s = "abzabc"

longestWord = []
subStr = []

for i in range(len(s)):

if s[i] >= s[i-1]:
subStr += s[i]

else:
subStr = s[i]

if len(subStr) > len(longestWord):
longestWord = subStr

print("Longest substring in alphabetical order is: ", "".join(longestWord))

<强>!!!但这是我不明白的!!!

在弄清楚这一点之前,我花了几个小时研究一个解决方案,将 's' 字符串(我必须检查的随机生成的字符串)中的当前字符与下一个字符进行比较,如下所示:

if s[i] < s[i+1]

使用这个解决方案,我总是得到一个“字符串索引超出范围”,因为我正在查看的字符串中的字母之间的最后一个比较会超出范围,因为没有任何字母要检查反对(s[i]+1 部分)。

那么当我将 s[i] 与 s[i]-1 进行比较时,如何避免出现“字符串索引超出范围”错误?当然,第一个字母前面没有字母,这意味着我有点“超出范围”?

希望有人能给我解释一下!我在其他地方找不到答案。

最佳答案

问题是当i为零时s[i-1]s[-1]。这不会返回字符串开头之前的字符,而是返回字符串的最后一个字符。这可能不是您想要的!

解决办法可能是回到使用 s[i+1],但使用:

for i in range(len(str)-1):

它将在字符串中的最后一个字符之前停止。

或者,您可以使用:

 for i in range(2, len(str)):

将从 1 开始 i(前提是至少有两个字符 - 您可能需要对一个字符的字符串进行特殊处理)。

关于python - Python 3 中 "String index out of range"的奇怪解决方案 - 无法弄清楚为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51965436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com