代码思路:
1.增加j使滑动窗口增大,直到窗口包含了t的所有元素;
2.增加i使滑动窗口缩小,将不必要的元素排除在外,直到碰到一个必须包含的元记录此时滑动窗口的长度,并保存最小值;
3.再增加一个位置,这个时候滑动窗口肯定不满足条件了,继续从步骤一开始执行,寻找新的满足条件的滑动窗口。
class Solution:def minWindow(self, s: str, t: str) -> str:need = collections.defaultdict(int)for c in t:need[c] += 1needCnt = len(t)i = 0res = (0,float('inf'))for j,c in enumerate(s):if need[c] > 0:needCnt -= 1need[c] -= 1if needCnt ==0:while True:c = s[i]if need[c] == 0:breakelse:need[c] += 1i += 1if j-i < res[1] - res[0]:res = (i,j+1)need[s[i]] += 1needCnt += 1i += 1return '' if res[1] > len(s) else s[res[0]:res[1]]