Я пытаюсь написать программу, которая возвращает длину самой длинной подстроки в строке. Это мой код:
def lengthOfLongestSubstring():
dict = {}
s = 'dvdf'
max_substr_length = 0
max_substr = ''
if len(s) < 1:
return 0
else:
for letter in s:
print('String value: ', s)
if letter not in max_substr:
max_substr = max_substr + letter
max_substr_length = len(max_substr)
dict[max_substr] = dict.get(max_substr, max_substr_length)
print(letter, max_substr, max_substr_length, dict)
elif letter in max_substr:
dict[max_substr] = dict.get(max_substr, max_substr_length)
s = s[s.index(letter)+1:]
max_substr = ''
max_substr_length = 0
print(s, letter, max_substr, max_substr_length, dict)
print(dict)
print(max(dict.values(), default=0))
Для входной строки s = 'dvdf'
Я избавляюсь от первого экземпляра буквы, которая повторяется во входной строке s, в строке 18 моего кода s = s[s.index(letter)+1:]
, Поэтому, когда встречается второе 'd', s должно обновляться до s = 'vdf' К сожалению, for l oop не начинает итерацию с 0-го индекса этого нового s. Есть ли способ, который не включает в себя итерацию по целочисленным индексам, чтобы получить для l oop начало итерации с самого начала, когда строка обновляется?