LeetCode 76 最小覆蓋子串

2021-10-08 22:51:23 字數 932 閱讀 2519

題目描述

給你乙個字串 s、乙個字串 t 。請你設計一種演算法,可以在o(n) 的時間複雜度內,從字串 s 裡面找出:包含 t 所有字元的最小子串。

示例:

輸入:s

="adobecodebanc",t

="abc"

輸出:"banc"

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

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

解題思路

這道題仍舊是使用雙指標+map實現。

這裡說的挺囉嗦的,直接看**吧!

該演算法的時間複雜度為o(m+n),m和n分別是兩個字串的長度,所以符合題目要求的o(n)的時間複雜度。空間複雜度是o(m),m是s字串的長度。

**實現

/**

* @param s

* @param t

* @return

*/var

minwindow

=function

(s, t)

let needtype= need.size

let res =

''// 移動右指標

while

(r< s.length)

// 子串已包含所有需要的字元,用該迴圈來縮小字串的長度

while

(needtype ===0)

l +=1}

r +=1}

return res

};

提交結果

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,然後...