class Solution:
def minWindow(self, s: str, t: str) -> str:
def judge(map_p, map_q):
for key, value in map_q.items():
if map_p.get(key, 0) < value:
return False
return True
n = len(s)
m = len(t)
map_t = {}
for c in t:
map_t[c] = map_t.get(c, 0) + 1
map_s = {}
min_len = float("inf")
left = 0
res_left = -1
res_right = -1
for right in range(n):
map_s[s[right]] = map_s.get(s[right], 0) + 1
while right - left + 1 >= m and judge(map_s, map_t):
if right - left + 1 < min_len:
min_len = right - left + 1
res_left = left
res_right = right
map_s[s[left]] = map_s.get(s[left], 0) - 1
left += 1
if min_len == float("inf"):
return ""
else:
return s[res_left : res_right + 1]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义