滑動視窗通用解leetcode字串匹配問題

2022-03-10 00:08:26 字數 1254 閱讀 8217

1.維護乙個視窗,不斷的向右邊移動

2.滿足要求後,移動左邊,當不滿足時,跳出。

3.重複1,2.得出答案。

下面有兩題leetcode題,一道困難一道中等,現在看來還挺簡單的,23333

另外stl的unordered_map的count方法,是驗證key值是否存在。

同時如果key值不存在,新加的key對應的值預設為零

給定乙個字串 s 和乙個非空字串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。

字串只包含小寫英文本母,並且字串 s 和 p 的長度都不超過 20100。

class

solution

} right++

;while

(match==need.

size()

)//滿足條件,left指標不斷向右邊,前進,直到不滿足條件

char tmp2=s[left];if

(need.

count

(tmp2))}

left++;}

}return res;}}

;

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

示例:輸入: s =

"adobecodebanc", t =

"abc"

輸出: "banc"

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

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

class

solution

int left=

0,right=0;

int match=0;

while

(rightsize()

)}right++

;while

(match==need.

size()

)char w=s[left];if

(need.

count

(w))

} left++;}

}return minlen==int_max?

"":s.

substr

(start,minlen);}

};

滑動視窗leetcode

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗 k 內的數字。滑動視窗每次只向右移動一位。返回滑動視窗最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大值 1 ...

leetcode 滑動視窗

面試題57 ii.和為s的連續正數序列 題目 輸入乙個正整數 target 輸出所有和為 target 的連續正整數序列 至少含有兩個數 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。題解 摘自 什麼是滑動視窗 滑動視窗可以看成陣列中框起來的乙個部分。在一些陣列類題目中,我們可以用滑動...

leetcode 滑動視窗

3.無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pww...