题目描述
思路分析
双指针
双指针维护一个滑动窗口,主指针是右指针,每次右指针元素加入窗口,再根据是否重复调整左指针,循环。每次循环更新答案。
代码实现
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.size()==0) return 0;
int res=0;
unordered_map<char,int> cnt;
for(int l=0,r=0;r<s.size();r++){
cnt[s[r]]++;
while(cnt[s[r]]>1) cnt[s[l++]]--;
res=max(res,r-l+1);
}
return res;
}
};