如何解决创建一个按字母顺序查找最长字符子串的 Python 程序
我在 Python 训练营中,我的第一个挑战是创建一个程序,该程序接受一个字符串,例如“s=azcbobobegghakl”,并指示哪个子字符串具有最长的字母连续字母数量。在我的例子中,它应该输出“beggh”。我一直在付出很多努力,并不打算使用任何库,只是使用 Python 基础。我知道有非常有效的方法来完成这项任务,但我正在努力坚持课堂上所教的内容。请不要太花哨。随意给我留下碎屑痕迹。这是我目前所拥有的:
输入: "
s='azcbobobegghakl'
Longest=""
for order in range(len(s)):
if s[order] >= "a":
Longest += s[order]
else:
Longest=""
print(Longest):
Output:
"azcbobobegghakl
”
到目前为止,我有一个程序可以打印字母串,只要它们大于或等于“a”,就是所有字母。有人可以从这里帮助我吗?我知道还有许多其他解决方案,但我只是想坚持到目前为止该类所经历的一切,这将是循环和 if 语句。同样,我不是在寻找答案,而是请提供一些提示。谢谢!
解决方法
alphabet = 'abcdefghijklmnopqrstuvwxyz'
def longest_alpha(string):
current = string[0]
longest = ''
for idx in range(len(string)-1):
if alphabet.index(string[idx]) <= alphabet.index(string[idx+1]):
current += string[idx+1]
else:
current = string[idx+1]
if len(current) > len(longest):
longest = current
return longest
,
您可以尝试运行此示例,看看您是否有任何问题:
s = 'azcbobobegghakl'
from itertools import count
def long_alphabet(string):
max_substr = "" # empty slice (to accept subclasses of str)
N = len(string)
for start in range(N): # O(n)
for end in count(start + len(max_substr) + 1): #
substr = string[start: end]
if len(substr) != (end - start): # found sup. or End
break
if sorted(substr) == list(substr):
max_substr = substr
return max_substr
ans = (long_alphabet(s)) # beggh <---
print(f"Longest substring in alphabetical order is: {ans} ")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。