Поиск самой длинной подстроки в алфавитном порядке (нужен совет по логике c) - PullRequest
1 голос
/ 18 июня 2020

Всем привет! Я пытаюсь решить один из сложных вопросов, чтобы найти самую длинную подстроку в алфавитном порядке.

Я так близок к тому, чтобы получить правильный ответ, но мой код не включает последнюю букву.

Ниже мой код:

s = 'azcbobobegghakl'
word = ''
longest = ''
temp = ''
for x in range(len(s)):
    if (s[x] <= s[x+1:x+2]):
        word = s[x]
        temp += word
        if len(temp) > len(longest):
            longest = temp      
    else:
        temp = ''
print('Longest substring in alphabetical order is: ' + longest)

Как я могу включить последнюю букву, установив другое условие? Я считаю, что мой лог c правильный, но мне трудно включить последнюю букву.

Как и правильный ответ, beggh, я получил begg и abcdc, я получил ab

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вместо добавления s [x] к temp добавьте s [x + 1].

Инициализировать временный и самый длинный первый символ, чтобы код работал со строкой из 1 символа или строкой, не имеющей последовательности в алфавитном порядке.

Остановить итерацию на один символ перед концом, поэтому s [x + 1] не выдаст вам IndexError.

Когда следующий символ выходит из строя, повторно инициализируйте temp для следующего символа.

Вы можете удалить переменная "слово".

s = 'azcbobobegghakl'
longest = s[0]
temp = s[0]
for x in range(len(s)-1):
    if (s[x] <= s[x+1]):
        temp += s[x+1]
        if len(temp) > len(longest):
            longest = temp      
    else:
        temp = s[x+1]
print('Longest substring in alphabetical order is: ' + longest)
1 голос
/ 18 июня 2020

Вы действительно были почти у цели. Но взгляните на очень похожий подход:

def longest_abc(s):
    word = s[0]
    longest = word
    for i in range(1, len(s)):
        if s[i] >= s[i - 1]:
            word += s[i]
        else:
            word = s[i]
        if len(word) > len(longest):
            longest = word
    return longest

>>> longest_abc('azcbobobegghakl')
'beggh'
>>> longest_abc('abcdc')
'abcd'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...