时间复杂度还是高,双指针有待优化
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
本文探讨了双指针算法在字符串处理中的应用,针对时间复杂度高的问题进行优化,通过使用集合和字典数据结构,实现对目标子串的有效查找。
5万+

被折叠的 条评论
为什么被折叠?



