# 最小覆盖子串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""

注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。

 

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:
"BANC"

示例 2:

输入:s = "a", t = "a"
输出:
"a"

 

提示:

 

进阶:你能设计一个在 o(n) 时间内解决此问题的算法吗? ## template ```python class Solution(object): def minWindow(self, s, t): ls_s, ls_t = len(s), len(t) need_to_find = [0] * 256 has_found = [0] * 256 min_begin, min_end = 0, -1 min_window = 100000000000000 for index in range(ls_t): need_to_find[ord(t[index])] += 1 count, begin = 0, 0 for end in range(ls_s): end_index = ord(s[end]) if need_to_find[end_index] == 0: continue has_found[end_index] += 1 if has_found[end_index] <= need_to_find[end_index]: count += 1 if count == ls_t: begin_index = ord(s[begin]) while need_to_find[begin_index] == 0 or\ has_found[begin_index] > need_to_find[begin_index]: if has_found[begin_index] > need_to_find[begin_index]: has_found[begin_index] -= 1 begin += 1 begin_index = ord(s[begin]) window_ls = end - begin + 1 if window_ls < min_window: min_begin = begin min_end = end min_window = window_ls if count == ls_t: return s[min_begin: min_end + 1] else: return '' if __name__ == '__main__': s = Solution() print (s.minWindow('a', 'a')) ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```