滑动窗口经典题
终于在昨天晚上梦里搞明白是怎么回事了。
我们不断滑动右指针,指向新的substring的尾顶点。左指针相应滑动,完成longest substring without repeating characters的限制。右指针的滑动代表的是创造新的substring,左指针代表限制。加起来就是整个string里所有的substring without repeating characters
我们过一遍右指针,实际上过的是所有的substring without repeating characters。所以最后max_count 的答案,就是正确答案。因为我们过了所有的longest substring without repeating characters。
太巧妙了。
右指针滑动 更新窗口,左指针滑动,更新限制条件,最后完成对于整个string longest substring without repeating characters的寻找。太有意思了
太有意思了。kk
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left = 0, max_sub = 0;
unordered_set<char> dict;
for(int i = 0; i < s.size(); i++){
while(dict.find(s[i]) != dict.end()){
dict.erase(s[left]);
left++;
}
dict.insert(s[i]);
max_sub = max(max_sub, i - left + 1);
}
return max_sub;
}
};