3. 无重复字符的最长子串
1 //双指针算法模板+哈希表 2 class Solution 3 { 4 public: 5 int lengthOfLongestSubstring(string s) 6 { 7 unordered_map<char,int> nums; 8 int res = 0; 9 for(int i = 0,j = 0;i < s.size();i++) 10 { 11 nums[s[i]]++; 12 while(nums[s[i]] > 1) nums[s[j++]]--; 13 res = max(res,i - j + 1); 14 } 15 return res; 16 } 17 };
1 //直接套用滑动窗口算法模板 2 class Solution 3 { 4 public: 5 int lengthOfLongestSubstring(string s) 6 { 7 unordered_map<char,int> window; 8 int left = 0,right = 0; 9 int res = 0; //1、为什么设置为0,因为当s为空字符串时,不会执行while循环 10 while(right < s.size()) 11 { 12 char c = s[right]; 13 right ++; 14 window[c] ++; 15 while(window[c] > 1) //2、注意这里是while,不是if 16 { 17 char d = s[left]; 18 left ++; 19 window[d] --; 20 } 21 res = max(res,right - left); 22 } 23 return res; 24 } 25 };
Mamba never out

浙公网安备 33010602011771号