03. 无重复字符的最长子串
本文最后更新于:25 天前
03. 无重复字符的最长子串
题目描述
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,”pwke” 是一个子序列,不是子串。
提示:
0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
题解
1 |
|
总结
- 解决关键词:滑动窗口,双指针
- 右侧边界 n 滑动,从当前窗口 substr(m, n - m) 中查找 s[n],如果找到,则将左侧边界 m 滑动至 pos + 1,不断重复
- 对 std::string::substr 使用 find 方法时,需要额外加上 substr 在原始字符串的起始位置
- substr 和 find 方法并非最优解,使用表存储字符出现的位置,查找时间复杂度为 O(n)。
1 |
|
03. 无重复字符的最长子串
https://ccccx159.github.io/2024/04/13/leetcode/03.最长不重复子串/