例如,如果s =’azcbobobegghakl’,则您的程序应打印
Longest substring in alphabetical order is: beggh
如果是平局,则打印第一个子字符串.例如,如果s =’abcbcd’,则您的程序应打印
Longest substring in alphabetical order is: abc
这是我找到的代码.如何在上述有关关系的问题中实现后一种条件?
*s = raw_input("provide string: ") result = [] final = [] for letters in s: result = result + [letters] if result == sorted(result) and len(result) >= len(final): final = result elif result != sorted(result): result = [result[len(result)-1]] print("Longest substring in alphabetical order is: "+("".join(final)))*
复制代码
最佳答案
我将通过以下方式解决该问题:
>让我们定义两个字符串:当前字母递增的字符串和当前最长的字符串.>两个字符串都以第一个字母初始化. (这样我们就可以随时阅读他们的最后一封信.)>然后遍历输入字符串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 = cprint "Longest substring in alphabetical order is:", longest
复制代码
如何修复您的代码.提到的条件:
使用>而不是比较len(result)中的> = len(final),即仅在最终解决方案较长时更新最终解决方案,而在长度相同的情况下则不会更新.
考虑迪伦斯的评论
你是对的.当s以最长的字母子字符串结尾时,我更新了代码和描述以正确处理情况. (其他移动:向下两行就足够了.)
End.
作者:codeday
本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520)
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论