76 最小覆蓋子串

2021-10-06 09:54:58 字數 746 閱讀 9077

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

示例:輸入: s = 「adobecodebanc」, t = 「abc」

輸出: 「banc」

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

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

使用滑動視窗的思想,我們可以用乙個map來儲存t字串的字元。然後用乙個map來儲存視窗裡的字元

定義視窗的左右指標left和right,初始化為0; 首先我們先滑動右視窗,左視窗不動,右移右視窗直到視窗中有滿足條件的字串。記錄視窗開始位置以及視窗長度,然後右移左視窗,直到視窗不滿足條件,根據大小跟新視窗開始位置以及長度,然後再右移右邊視窗,如此迴圈 知道右視窗到底s字串的終點。

跟具體的思路可以看:滑動視窗

class

solution

//判斷左視窗是否要收縮

while

(valid == need.

size()

)char d = s[left]

;//將要移出視窗的字元

left++

;//左視窗右移

if(need.

count

(d))}}

return len == int_max ?

"": s.

substr

(start, len);}

};

76 最小覆蓋子串

題目 給你乙個字串s 乙個字串t,請在字串s裡面找出 包含t所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 方法一 自己寫的,但是leetcode上超時 defminwindow s,t m 0 all in false iflen t 0or len s...

76 最小覆蓋子串

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

76最小覆蓋子串

給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 滑動視窗解法。hashmap方式 param s param t return public static string minwind...