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 中存在這樣的子串,我們保證它是唯一的答案。思路 參考大佬的解題思路,超級清晰 ...