滑动窗口总结
模板,#########包围区域是需要改动的地方
def minWindow(self, s: str, t: str) -> str:
need={} #t串词频map
window = {} #窗口匹配map
for c in t:
need[c] = need.get(c, 0) + 1
left=0 #窗口左边界
right=0 #窗口右边界
start=0 #记录子串起点
minLen = sys.maxsize #最小长度
valid=0 #t串与s串匹配次数
while right < len(s):
#增大窗口
c = s[right] #c是要移入窗口的字符
right += 1
######### 进行窗口内数据的一系列更新
if c in need: #该字符在t串中
window[c] = window.get(c, 0) + 1
if window[c] == need[c]: #该字符匹配
valid +=1
#########
#判断是否要缩小窗口
while valid==len(need):
d = s[left] #d是要移出窗口的字符
left += 1 #左移
######### 进行窗口内数据的一系列更新
if d in need:
if window[d] == need[d]:
valid -=1
window[d] -= 1
#########
最后更新于