
class Solution(object):
def minWindow(self, s, t):
# 滑动窗口 ➕ 哈希表
dict_t,dict_s = defaultdict(int),defaultdict(int)
len_s, len_t = len(s), len(t)
for i in range(len_t):
dict_t[t[i]] += 1
cnt, l, ans = 0, 0, ""
for r in range(len_s): #指针右移,找到符合条件的窗口
dict_s[s[r]] += 1
if dict_s[s[r]] <= dict_t[s[r]]:
cnt += 1 # 记录窗口内有效字符数
while dict_s[s[l]] > dict_t[s[l]] and l < r:
# 指针左移:左边界的字符不在t中;
# 或新增加的右边界值符合条件并且和左边界值相同
dict_s[s[l]] -=1
l += 1
if cnt == len_t:#有效字符数等于cnt时,更新答案
if ans =="" or len(ans) > r-l+1: # 更新ans的条件
ans = s[l:r+1]
return ans