题目链接:https://www.acwing.com/problem/content/description/57/
题目如下:
class Solution {
public:
int longestSubstringWithoutDuplication(string s) {
//carl哥的滑动窗口思想
//通过umap来判断是否已出现重复字符
int res=INT_MIN;
unordered_map<char,int> umap;
int l=0;//滑动窗口的起始位置,即窗口向右滑动时靠左的一边
for(int r=0;r<s.size();r++){//r为窗口向右滑动时靠右的一边
umap[s[r]]++;
while(umap[s[r]]>=2){//将出现重复的元素全部删除,直到都为小于2位置
umap[s[l++]]--;//关键之处
}
res=max(res,r-l+1);//保存当前满足条件的最大窗口长度
}
if(res==INT_MIN) return 0;
else return res;
}
};