LeetCode 3. 无重复字符的最长子串
题目要求找到字符串中最长的无重复字符子串,并返回其长度。下面列出了几种优雅的解法、解题模板以及相关经典变体问题的分析。
解法 1:滑动窗口 + 哈希集合
滑动窗口是解决此类问题的经典方法。通过一前一后的两个指针维持一个窗口,窗口内的子串保持无重复特性。
解题思路:
- 定义两个指针
left
和right
,分别表示滑动窗口的起点和终点。 - 使用一个哈希集合(
Set
)来存储滑动窗口中已出现的字符。 - 对每个字符
s[right]
:- 如果字符不在集合中(窗口中),将其加入集合并移动右指针,更新结果。
- 如果字符在集合中(窗口中),从左侧缩小窗口,删除字符,直到窗口中无重复。
模板代码:
class