【剑指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 };
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号