📜  不重复字符的最长子串的长度(1)

📅  最后修改于: 2023-12-03 15:21:32.171000             🧑  作者: Mango

不重复字符的最长子串的长度

当我们需要在一个字符串中找到不包含重复字符的最长子串时,我们可以使用一些算法来解决这个问题。这个问题也被称为“最长不重复子串”。

算法思路

我们可以使用滑动窗口的方法来解决这个问题。我们定义一个窗口,其中包含一个无重复字符的字串。我们可以移动窗口,将字符添加到窗口中,直到我们找到一个包含重复字符的窗口。然后,我们将窗口的左端点向右移动,以保证窗口内没有重复字符。

在这个过程中,每当我们找到一个无重复字符的窗口,我们将计算其长度,如果它比我们之前找到的最长子串要长,我们就更新最长子串的长度。

代码实现

以下是一种使用Python语言实现的解决方案:

def lengthOfLongestSubstring(s: str) -> int:
    n = len(s)
    ans = 0
    left = 0
    right = 0
    lookup = set()
    while right < n:
        if s[right] not in lookup:
            lookup.add(s[right])
            right += 1
            ans = max(ans, right - left)
        else:
            lookup.remove(s[left])
            left += 1
    return ans
时间复杂度

以上算法的时间复杂度为 $O(n)$,其中 $n$ 是字符串的长度。因为在最坏情况下,我们可能需要遍历整个字符串两次。