雜湊錶類題目 Leetcode76題 最小覆蓋子串

2021-10-08 23:08:07 字數 1161 閱讀 9254

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

所有字元的最小子串。

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

如果 s 中不存這樣的子串,則返回空字串 「」。 如果 s 中存在這樣的子串,我們保證它是唯一的答案。

該題利用滑動視窗與雜湊表方法。首先雜湊表要記錄t串中的字元出現數量,還要記錄視窗**現t字元的數量,視窗必須滿足t中的字元在視窗中的數量相同。

視窗的建立:頭指標begin 尾指標就是迴圈中的i。

頭指標後移的情況:

1.當前指向的字元沒有在t**現

2.當前指向的字元 在視窗中的數量 大於了t**現的數量

然後要檢查視窗中的出現t中的字元數量是否相同,如果相同並且長度小於之前的臨時字串就更新臨時字串

class

solution

}return

true;}

string minwindow

(string s, string t)

;//儲存當前滑動視窗**現字元的數量

int map_t[

128]=;

//儲存t串中字元數量

vector<

int>str;

//儲存t串出現了哪些字元

for(

int i=

0;isize()

;i++

)for

(int i=

0;i<

128;i++)}

int begin=0;

//頭指標

string res="";

for(

int i=

0;isize()

;i++

)else

if(map_s[ch]

>map_t[ch]

)//如果在視窗出現的字元數量大於在t串**現的數量 就後移

else}if

(iswindowok

(map_s,map_t,str)

)//如果視窗中的字元數量都夠了}}

return res;}}

;

LeetCode7反轉整數

給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。以字串方式思考...

LeetCode 7 反轉整數

給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。很簡單,就是不...

leetcode 7反轉整數

隨機一題 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返...