код для поиска самой длинной подстроки без повторяющихся символов не работает

Я написал следующий код для определения длины самой длинной подстроки без повторения символов ниже, но она не работает - кто-нибудь знает почему? (Я знаю, что в Интернете есть другие решения, которые работают, но следующий код написан в моем стиле, и я бы хотел его адаптировать)

def longestSubstring(str):

    start = 0
    maxLen = 1

    hashSet = set()

    for i in range(len(str)):

        if str[i] not in hashSet:
            hashSet.add(str[i])
            maxLen = max(maxLen, i - start + 1)
            continue

        else:

            while str[start] != str[i]:
                hashSet.discard(str[start])
                start += 1

            hashSet.discard(str[start])
            start += 1

    return maxLen

Всего 1 ответ


Это всего лишь одна строка, удалите 2-й hashSet.discard(str[start]) вы не хотите удалять этот символ из набора, вам просто нужно увеличить начало, это символ, с которым вы только что столкнулись.


Есть идеи?

10000