使用Python打印最长的字母子字符串

数据大师
数据大师
数据大师
173
文章
0
评论
2021-06-3010:58:59 评论 28 1114字
摘要

假设s是一串小写字符.编写一个程序,打印s的最长子串,其中字母按字母顺序出现.

例如,如果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

更多文章前往首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: