Sliding Window
#Experience
- 枚举右端点,挪动左端点
- 挪动左端点的判断条件一定枚举右端点出发的
- 判断条件是难点
cpp
int left=0;
for(int right=0;right<n;i++){
# 常常伴有哈系
while(condition){
left+=1;
}
# 更新ans
}
return ans;
无重复字符的最长子串
cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int ans=0,left=0,n=s.size();
unordered_map<char,int>m;
for(int right=0;right<n;right++){
m[s[right]]++;
while(m[s[right]]>1){
m[s[left]]--;
left++;
}ans=max(ans,right-left+1);
}
return ans;
}
};