首页 > 解决方案 > 用于查找最长子字符串而不重复字符的代码不起作用

问题描述

我编写了以下代码来查找最长子字符串的长度而不重复下面的字符,但它不起作用 - 有人知道为什么吗?(我知道互联网上还有其他可行的解决方案,但以下代码是按照我的风格编写的,我希望能对其进行调整)

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

标签: stringalgorithmsubstringsliding-window

解决方案


就一行,去掉第二个hashSet.discard(str[start])你不想从集合里去掉这个字符,你只需要增加start,就是你刚刚遇到的那个字符。


推荐阅读