Algorithm 编写一个程序,打印字母按字母顺序排列的s的最长子字符串

Algorithm 编写一个程序,打印字母按字母顺序排列的s的最长子字符串,algorithm,substring,alphabetical,Algorithm,Substring,Alphabetical,代码运行良好,输出似乎正常。但我的打印在for循环中,这让我怀疑编码是否正确: s = 'azcbobobegghakl' i = 0 increase = 0 longest = 1 for i in range(len(s) - 1): if s[i+1] >= s[i]: increase +=1 else: if increase > longest: longest

代码运行良好,输出似乎正常。但我的打印在for循环中,这让我怀疑编码是否正确:

s = 'azcbobobegghakl'
i = 0
increase = 0
longest = 1
for i in range(len(s) - 1):
        if s[i+1] >= s[i]:
           increase +=1
        else:
            if increase > longest:
               longest = increase
               print ("
Longest substring in alphabetical order is:"+""+s[i-longest:i+1])

            increase =0

你的怀疑是对的。如果您的字符串包含一些长度越来越长的适当子字符串,您将输出它们

不要立即打印,只需记住索引i和最长长度或子字符串边框,并在循环后输出最佳字符串

if increase > longest:
           longest = increase
           beststart = i-longest
           bestend = i+1
           increase = 0

我会这样写:

s = 'abcaakabcdeakk'
i = 0
increase = 0
longest = 1
longest_end = 1
for i in range(len(s)):
        if i < len(s)-1 and s[i+1] >= s[i]:
           increase += 1
        else:
            if increase > longest:
               longest = increase
               longest_end = i
            increase = 0
print ("Longest substring in alphabetical order is:" + s[longest_end-longest:longest_end+1])
s = 'abcaakabcdeakk'
i = 0
increase = 0
longest = 1
longest_end = 1
for i in range(len(s)):
        if i < len(s)-1 and s[i+1] >= s[i]:
           increase += 1
        else:
            if increase > longest:
               longest = increase
               longest_end = i
            increase = 0
print ("Longest substring in alphabetical order is:" + s[longest_end-longest:longest_end+1])