题目
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
答案
这个问题可以使用滑动窗口算法来解决。
首先,我们定义一个变量 max_len
来记录最长子串的长度,并初始化为 0。
然后,我们定义一个集合 char_set
来记录当前窗口内出现的字符,并初始化为空集。
接下来,我们使用一个指针 left
来表示当前窗口的左边界,初始化为 0。
然后,我们使用一个指针 right
来表示当前窗口的右边界,初始化为 0。
在每次循环中,我们将 right
向右移动一位,并将当前字符加入到 char_set
中。
如果当前字符已经在 char_set
中出现过,说明当前窗口内存在重复字符,我们需要将 left
向右移动一位,并更新 <