LeetCode 76:最小覆盖子串 | 滑动窗口进阶
LeetCode 76最小覆盖子串 | 滑动窗口进阶引言最小覆盖子串Minimum Window Substring是 LeetCode 第 76 题难度为 Hard。题目要求在字符串 s 中找到包含字符串 t 所有字符的最小子串。这是滑动窗口的进阶问题需要同时维护两个哈希表来记录窗口内和目标字符的计数。算法实现Python 实现def minWindow(s, t): if not s or not t: return from collections import Counter need Counter(t) window {} left, right 0, 0 valid 0 start, min_len 0, float(inf) while right len(s): c s[right] right 1 if c in need: window[c] window.get(c, 0) 1 if window[c] need[c]: valid 1 while valid len(need): if right - left min_len: start left min_len right - left d s[left] left 1 if d in need: if window[d] need[d]: valid - 1 window[d] - 1 return s[start:start min_len] if min_len ! float(inf) else 复杂度分析时间复杂度O(n m)其中 n 和 m 是字符串长度空间复杂度O(m)总结最小覆盖子串问题展示了滑动窗口的灵活应用。通过同时维护两个计数表可以在 O(n) 时间内找到最小子串。