我将通过以下方式解决该问题:
>让我们定义两个字符串:当前字母递增的字符串和当前最长的字符串.
>两个字符串都以第一个字母初始化. (这样我们就可以随时阅读他们的最后一封信.)
>然后遍历输入字符串s(从第二个字符开始).
>如果当前字符c满足要求c> = current [-1],则将其添加到当前解决方案中.
>我们可能将当前字符串存储为最长.
>如果c不满足订购要求,则从新的解决方案电流= c开始.
>最后,我们打印最长的字符串.
s = "azcbobobegghakl"
longest = s[0]
current = s[0]
for c in s[1:]:
if c >= current[-1]:
current += c
if len(current) > len(longest):
longest = current
else:
current = c
print "Longest substring in alphabetical order is:", longest
如何修复您的代码.提到的条件:
使用>而不是比较len(result)中的> = len(final),即仅在最终解决方案较长时更新最终解决方案,而在长度相同的情况下则不会更新.
考虑迪伦斯的评论
你是对的.当s以最长的字母子字符串结尾时,我更新了代码和描述以正确处理情况. (其他移动:向下两行就足够了.)