SlidingWindow

  • 枚举右端点,挪动左端点
  • 挪动左端点的判断条件一定枚举右端点出发的
  • 判断条件是难点
int left=0;
for(int right=0;right<n;i++){
	# 常常伴有哈系
	while(condition){
		left+=1;
	}
	# 更新ans
}
return ans;

无重复字符的最长子串

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;
	}
};