首页 > 解决方案 > 按字母顺序排列的最长子字符串给出了意外的输出

问题描述

我的问题与这个封闭的一个 -按字母顺序排列的最长子字符串有些相关,但不正确。

String s这是我的python代码,用于打印其中字母按字母顺序出现的最长子字符串。

s = 'azcbobobegghakl'
chow = ''
stuff = []
for e in s:
    if(s.find(e) < (len(s)-1)):     #fix indexoutofrange
       if(e <= s[s.find(e) + 1]):   #just checking the next char
           chow = chow + e          #sum up
       else:
           stuff.append(chow)
           chow = ''                # reset chow
    else:
        stuff.append(chow)          #edit

if(len(stuff)==1):
    print(stuff[0])
elif(len(stuff)==0):
    print('')
else:
    print(max(stuff,key=len))

我知道有人会在 StackOverflow 上找到更好的代码。但是,我的问题是为什么我没有得到代码的预期行为?


测试用例:

我可以看到,最后一个字符有时没有添加,或者有时第一个字符是错误的。

请具体回答错误区域并描述原因,而不是修复代码。

标签: pythonpython-3.x

解决方案


对于最后一个字符消失,我认为问题在于您没有在将字符串附加到列表之前添加最后一个字符。可以通过以下修复来修复此问题:

s = 'azcbobobegghakl'
chow = ''
stuff = []
for e in s:
    if(s.find(e) < (len(s)-1)):     #fix indexoutofrange
       if(e <= s[s.find(e) + 1]):   #just checking the next char
           chow = chow + e          #sum up
       else:
           chow = chow + e #[FIX]Add the last char before append to list
           stuff.append(chow)
           chow = ''                # reset chow

print(max(stuff,key=len))

推荐阅读