LeetCode 最小覆蓋子串(滑動視窗)

2021-10-20 21:54:02 字數 1112 閱讀 8378

難度:困難

給你乙個字串s、乙個字串t。返回s中涵蓋t所有字元的最小子串。如果s中不存在涵蓋t所有字元的子串,則返回空字串""

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

示例

輸入:s = "adobecodebanc", t = "abc"

輸出:"banc"

這⼀題是滑動窗⼝的題⽬,在窗⼝滑動的過程中不斷的包含字串t,直到完全包含字串t的字元以後,起始位置向後移動至剛好不再完全包含字串t時,記下左側視窗的位置減一,和減一後的窗⼝⼤⼩。每次都不斷更新這個符合條件的窗⼝和窗⼝⼤⼩的最⼩值。最後輸出結果即可。

本題難點在於如何判斷已經完全包含字串t。這裡我使用hashmap,掃瞄字串t時,每個字元作為key,value是其次數。掃瞄字串s時,沒掃瞄到一次hashmap內包含的字元時便使其value減一,當hashmap內的value全部不大於0時,滑動視窗便完全覆蓋了字串t

class

solution

else

}for

(int end =

0; end < len; end++

) start++;}

if((end - start +2)

< minlen)}}

// 判斷是否找到最小覆蓋子串並返回結果

if(minlen != len +1)

else

}// 檢查是否已經完全包含

public

boolean

check

(hashmap map)

}return

true;}

}

LeetCode 最小覆蓋子串

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

最小覆蓋子串

給你乙個字串 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 ...