Необходимо написать программу, которая печатает самую длинную подстроку переменной, в которой буквы встречаются в алфавитном порядке.
например. s = 'onsjdfjqiwkvftwfbx'
, он должен вернуть 'dfjq'
.
как новичок, код, написанный ниже:
y=()
z=()
for i in range(len(s)-1):
letter=s[i]
while s[i]<=s[i+1]:
letter+=s[i+1]
i+=1
y=y+(letter,)
z=z+(len(letter),)
print(y[z.index(max(z))])
Однако приведенный выше код всегда будет возвращать
IndexError: string index out of range.
Он будет давать желаемый результат, пока я не изменю его на range(len(s)-3)
.
Хотел бы спросить совета по:
Почему range(len(s)-1)
приведет к такой ошибке сообщение? Чтобы позаботиться об индексе до i + 1, я уже уменьшил значение диапазона на 1. Мое объяснение состоит в том, что если длина переменной s равна 14, она имеет индекс от 0 до 13, диапазон (14) дает значение 0-13. Однако, поскольку мой код включает индекс i + 1, диапазон уменьшается на 1, чтобы позаботиться об этой части.
Как изменить приведенный выше код для получения правильного результата. если s = 'abcdefghijklmnopqrstuvwxyz'
, приведенный выше код с диапазоном (len (s) -3) снова возвращает IndexError: string index out of range
. Зачем? что не так с этим кодом?
Любая помощь приветствуется ~