模板理解
left=0
right=0
window=collections.defaultdict(int)
need=collections.defaultdict(int)
valid=0
minlen=float('inf')
maxlen=0
while(right<len(s)):
c=s[right]
right+=1
#根据问题更新窗口window 有效值valid
#根据问题写 收缩窗口的条件 比如valid==len(need) 或者window[c]>1
while():
#一般在这会写满足返回条件的代码 比如更新minlen maxlen
#
if():
d=s[left]
left+=1
#根据问题更新窗口window 有效值valid
#有时候是在这里来写满足返回条件的代码 比如更新minlen maxlen
if():
#看需要返回啥 简单点一般只需要返回minlen maxlen 难点需要返回子串 根据情况更新保存相关的数据
return
力扣 76 最小覆盖字串 https://leetcode-cn.com/problems/minimum-window-substring/
力扣 567 字符串的排列 https://leetcode-cn.com/problems/permutation-in-string/submissions/
力扣 438 找到字符串中所有字母异位词 https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/submissions/
力扣 3 无重复字符的最长子串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/submissions/
力扣209 长度最小的子数组 https://leetcode-cn.com/problems/minimum-size-subarray-sum/