我一直在尝试编写一个程序,在字符串中按字母顺序打印出最长的子字符串。 这是我的代码:
s = 'azcbobobegghakl'
n = 0
longest = "a"
while n < len(s):
x = n
for i in s:
if s[x + 1] >= s[x]:
x += 1
else:
break
sub_string = (s[n:x+1])
if len(sub_string) > len(longest):
longest = sub_string
n += 1
print(“按字母顺序排列的最长子字符串为:”+最长)
因为我在每次迭代时递增'x',因此索引很快就会超出范围。只是想知道我是否有办法解决这个问题。 感谢。
答案 0 :(得分:0)
试试这个: -
s = 'azcbobobegghakl'
n = 0
longest = "a"
while n < len(s):
x = n
for i in s:
if x+1<len(s) and s[x + 1] >= s[x]:
x += 1
else:
break
sub_string = (s[n:x+1])
if len(sub_string) > len(longest):
longest = sub_string
n += 1
print(longest)
编辑:当n = len(s)-1
s [x + 1]指向s的第n个字符时,这是无效的。所以你需要一个额外的条件x+1<len(s)
来控制它。