【剑指offer】47.最长不含重复字符的子字符串
总目录:
1.问题描述
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
数据范围:
s.length≤40000
2.问题分析
1迭代统计,使用哈希表用来快速检索是否存在,用双指针来维护左右边界
3.代码实例
1 class Solution { 2 public: 3 int lengthOfLongestSubstring(string s) { 4 //哈希表记录窗口内非重复的字符 5 unordered_map<char, int> mp; 6 int res = 0; 7 //设置窗口左右边界 8 for (int left = 0, right = 0; right < s.length(); right++) { 9 //窗口右移进入哈希表统计出现次数 10 mp[s[right]]++; 11 12 //出现次数大于1,则窗口内有重复 13 while (mp[s[right]] > 1) { 14 //窗口左移,同时减去该字符的出现次数 15 mp[s[left]]--; 16 left++; 17 } 18 19 //维护子串长度最大值 20 res = max(res, right - left + 1); 21 } 22 return res; 23 } 24 };
本文作者:啊原来是这样呀
本文链接:https://www.cnblogs.com/OhOfCourse/p/16909391.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步