无重复字符的最长子串
无重复字符的最长子串
1、题目
2、题解
1 滑动窗口+哈希表
思路:
哈希表\(dic\)统计字符串\(s\)中每个字符最后出现的位置。
设置两个指针\(i、j\),\(j\)指针遍历字符串,当遍历到重复字符时,\(i\)指针根据上轮的\(i\)和\(dic[s[j]]\)更新,保证区间\([i+1,j]\)中无重复字符且最大。
每轮的结果为上轮结果和本轮双指针区间长度中的最大值。
代码实现:
1 |
|
复杂度分析:
- 时间复杂度\(O(N)\) : 其中 \(N\) 为字符串长度,动态规划需遍历计算 \(dp\)列表。
- 空间复杂度 \(O(1)\) : 字符的 ASCII 码范围为$ 0 ~ 127$ ,哈希表 \(dic\) 最多使用 \(O(128)=O(1)\) 大小的额外空间。
2 动态规划+哈希表
思路:
代码实现:
1 |
|
无重复字符的最长子串
http://example.com/2023/10/24/no-repeated-substr/