最小覆蓋子串

2021-10-05 20:27:57 字數 668 閱讀 6621

leetcode

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

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

輸出: 「banc」

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

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

思路和**

參考鏈結

滑動視窗+雜湊

首先用乙個雜湊表示 t 中每乙個字元出現的次數,用乙個cnt表示包含 t 中所有元素。遍歷s。

i 就是視窗的右邊界,若當前元素–lettercnt[s[i]] >= 0說明是 t 中所需要的元素,對於那些不是 t 中的元素或多餘的元素,會變成負值。

若cnt == t.size()表示當前的滑動視窗包含所有 t 所需要的字元,這時候應該更新最小長度,同時移動左邊界。

class

solutionif(

++lettercnt[s[left]

]>0)

--cnt;

++left;}}

return minleft ==-1

?"": s.

substr

(minleft, minlen);}

};

最小覆蓋子串

給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。滑動視窗。設定left,right兩個游標...

最小覆蓋子串

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

最小覆蓋子串

題目 給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。思路 參考大佬的解題思路,超級清晰 ...