Leetcode第76題 最小覆蓋子串

2022-07-31 20:48:17 字數 890 閱讀 5991

題目

給你乙個字串 s、乙個字串 t,請在字串 s 裡面找出:包含 t 所有字母的最小子串。

示例:

輸入: s = "adobecodebanc", t = "abc"

輸出: "banc"

說明:如果 s 中不存這樣的子串,則返回空字串 ""。

如果 s 中存在這樣的子串,我們保證它是唯一的答案。

題解解題思路來自於參考文章。本題採用一種高階雙指標的滑動視窗法+雜湊法進行求解。一般滑動視窗法適用於求解字串匹配問題。具體解法見**注釋。

class

solution

int left = 0;

int right = 0;

mapneed = new hashmap<>();

mapwindow = new hashmap<>();

int len = 0;

int minlen = integer.max_value; //

記錄最小長度

int start = 0; //

記錄最小長度在被查詢字串中的起始位置

for(int i = 0; i < t.length(); ++i)

while(right }

right++;

while(len == need.size())

char c1 =s.charat(left);

if(need.containskey(c1))

}left++;}}

return minlen == integer.max_value ? "" : s.substring(start, start +minlen);

}}

參考:

雜湊錶類題目 Leetcode76題 最小覆蓋子串

給你乙個字串 s 乙個字串 t 請你設計一種演算法,可以在 o n 的時間複雜度內,從字串 s 裡面找出 包含 t 所有字元的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案...

leetcode刷題python之最小覆蓋子串

題目 給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 學到了 之前沒記住又遇到了 新函式 counter 可以直接把字串變成字元 別的也行 的結合 all 判斷列表有沒有空字串或者0,有則返...

LeetCode刷題 76 最小覆蓋子串

給你乙個字串s 乙個字串t,請在字串s裡面找出 包含t所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果s中不存這樣的子串,則返回空字串 如果s中存在這樣的子串,我們保證它是唯一的答案。class solution 建立對映計數 maptemp n...