/* 解决本题基本上是靠滑动窗口的想法
先把需要匹配的子串加入到window中
注意,window的类型为unoedered_map
window[c]++的意思是如果window中没有字符c
此时window中c的个数经过++后变为1
在然后使用滑动窗口的思想
不断地加入删除字符,直至取得我们想要的结果 */
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = 0,left = 0,right = 0;
unordered_map<char,int>window;
while(right < s.size()){
char c = s[right++];
window[c]++;
while(window[c] > 1){
char d = s[left++];
if(window.count(d)){
window[d]--;
}
}
len = max(len,right - left);
}
return len;
}
};