0

我在 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 语句。同样,我不是在寻找答案,但请提供一些提示。谢谢!

4

2 回答 2

0
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
于 2021-02-02T00:02:51.053 回答
0

您可以尝试运行此示例,看看是否有任何问题:

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} ")
于 2021-02-02T00:04:46.967 回答