код для поиска самой длинной подстроки без повторяющихся символов не работает - PullRequest
1 голос
/ 23 марта 2020

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

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 Ответ

1 голос
/ 24 марта 2020

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

...