思路:滑动窗口的思想
方法一:滑动窗口
int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是否重复 */ unordered_set<char> set; size_t maxL=0; for(int l=0,r=0;r<s.size();++r) { if (!set.count(s[r])) // 当前判断的元素不存在于滑动窗口[l,r-1]中 set.insert(s[r]); // 将元素放入滑动窗口(即记录不重复字符) else // 当前判断的元素已经存在于滑动窗口[l,r-1]中 { while(set.count(s[r])) // 从左缩短窗口,直到剔除当前判断的元素为止 set.erase(s[l++]); set.insert(s[r]); // 将当前判断元素放入到滑动窗口中 } maxL=max(maxL,set.size()); // 更新无重复字符的最长子串 } return maxL; }