时间复杂度还是高,双指针有待优化
class Solution:
def minWindow(self, s: str, t: str) -> str:
se = set(list(t))
p = []
ans = ""
maxn = len(s) + 1
from collections import defaultdict
last = defaultdict(list)
vis = defaultdict(int)
raw = defaultdict(int)
for i in range(len(t)):
raw[t[i]] += 1
for i in range(len(s)):
if(s[i] in se):
if(vis[s[i]] < raw[s[i]]):
vis[s[i]] += 1
else:
cur = last[s[i]][0]
p.remove(cur)
last[s[i]].remove(cur)
last[s[i]].append(i)
p.append(i)
if(len(p) == len(t)):
st = p[0]
ed = p[len(p)-1]
if(ed - st + 1 < maxn):
maxn = ed - st + 1
ans = s[st:ed + 1]
return ans