该题就是最简单的滑动窗口问题,直接上代码:
int lengthOfLongestSubstring(string s) {
unordered_map<char,int>window;
int left=0,right=0;
int res=0;//记录最大长度
while(right<s.size()){
char c=s[right];
right++;
window[c]++;
while(window[c]>1){//当窗口中出现重复字符时开始收缩窗口
char d=s[left];
left++;
window[d]--;
}
res=max(res,right-left);//right-left不加1原因是一开始right++了已经
}
return res;
}