LeetCode3. 无重复字符的最长子串
题目
分析
用滑动窗口,就是双指针来做。设 i 为串的尾指针,符合题目要求的串的左侧指针为 j ,且 i 指针向后移动时,j 指针可能不动或者向右移动。
用哈希表来存 从 j 到 i 部分的每个字符的次数,如果 i + 1 重复的话,那么冲突的一定是 位置 i 和 i + 1 部分冲突,这时 j 需要往前移动,移动
到没有哈希表重复为止。
代码
1 class Solution { 2 public: 3 int lengthOfLongestSubstring(string s) { 4 unordered_map<char,int>heap; 5 int res = 0; 6 for(int i = 0,j = 0;i < s.size();i++){ 7 heap[s[i]]++; //尾指针往后移动,同时更新哈希表 8 while(heap[s[i]] > 1){ 9 //出现重复字符 , 窗口开始滑动,头部指针 j 开始往后移动,直到没有重复为止 10 heap[s[j]]--; 11 j++; 12 } 13 res = max(res,i - j + 1); 14 } 15 16 return res; 17 } 18 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2021-03-01 日期差值
2021-03-01 字符串内排序
2021-03-01 EXCEL排序
2021-03-01 特殊排序
2021-03-01 成绩排序
2021-03-01 排序