本文共 1002 字,大约阅读时间需要 3 分钟。
时间复杂度还是高,双指针有待优化
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
转载地址:http://bkmfb.baihongyu.com/