LeetCode 76 最小覆蓋子串

2021-09-16 21:08:29 字數 752 閱讀 1307

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。

示例:

輸入: s= "adobecodebanc",t= "abc"輸出:"banc"
說明:

此題屬於滑動視窗的一類問題。首先把字串t中的字元都存入雜湊表中,然後從頭開始遍歷字串s,每遇到乙個字元,就把它在雜湊表中的值減一,如果減一後雜湊表中的值大於等於0,說明這個字元是我們正要找的字元之一,所以將count加一,判斷當count等於字串t的大小時,說明已經找到乙個子串,這時將它與歷史最小子串比較如果小則存入。接下來我們試圖把left向右滑動,從left開始的字元剛才都被在雜湊表中減去了,現在我們每遇到乙個字元,就將其在雜湊表中的值加一恢復,然後判斷其如果加一後小於等於0,說明它是無關緊要的字元,於是將left向後移動一步;而如果加一後大於0,說明如果這個字元刪去後,右邊的剩下的字元將不夠組成字串t的,所以將count減一,然後將left向右移動一步,緊接著就會退出while迴圈然後進行接下來的 i 繼續向後的遍歷。最後當i遍歷到字串結尾之後,返回最小覆蓋子串ans。

class solution 

if(++umap[s[left]] <= 0)

left++;

else}}

}return ans;

}};

LeetCode76 最小覆蓋子串

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 字串和雜湊表的問題。hashmap來儲存t字串中個字母元素的出現次數,left right記錄當前子字串的左右下標值,min minleft ...

leetcode 76 最小覆蓋子串

這道題我使用了很笨的方式花了好久解決了,但是時間複雜度太度,只看網上檢視原始碼,不得不說網上的答案基本都是一樣的,但是對於基礎相對薄弱的我來說這些 看起來很是費勁,還用要加強c 基礎的練習才行。思路相對來說不是很難 1 首先構架t字串的hash表,因為字元與ascii碼較好的關係,使用vector陣...

leetcode76 最小覆蓋子串

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。典型雙指標滑動串列埠題目,先將t建dict,然後...