給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。
換句話說,第乙個字串的排列之一是第二個字串的子串。
示例1:
輸入: s1 = "ab" s2 = "eidbaooo"
輸出: true
解釋: s2 包含 s1 的排列之一 ("ba").
示例2:
輸入: s1= "ab" s2 = "eidboaoo"
輸出: false
注意:
輸入的字串只包含小寫字母
兩個字串的長度都在 [1, 10,000] 之間
思路分析:建立乙個和s1串大小相同的視窗,在s2串中不斷右移,如果某個時候當視窗中各個字元出現的情況與s1中各個字元出現的情況一樣,說明此時視窗中的字串是s1的乙個排列。
class
solution
//第一步:將s1串中的各個字元出現的次數計負數
for(auto ch : s1)
//第二步:將s2前sonesize個字元放入hashmap
for(
int index =
0; index < sonesize;
++index)
else}if
(hashmap.
size()
==0)//第三步:逐漸向右移動視窗
for(
int right = sonesize; right < stwosize;
++right)
else
//移除left,計負數
int left = right - sonesize;
if(hashmap[s2[left]]==
1)else
//如果此時hashmap為空,則說明視窗中各個字元出現的次數與s1串中各個字元出現的次數一樣
leetcode字串的排列
1.暴力法 求出s1的全排列,然後判斷s2中是否包含s1的排列之一 如下 class solution for int i start i s.size i 結果,超時 2.滑動視窗 維護乙個大小為s1.size 的視窗,使用hashmap1記錄字串s1內的字元情況,hashmap2記錄字串s2中滑...
leetcode 字串的排列
輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素。示例 輸入 s abc 輸出 abc acb bac bca cab cba 限制 1 s 的長度 8 std vector string permutation std string s 對字串進行...
leetcode 字串的排列 python3
給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。示例1 輸入 s1 ab s2 eidbaooo 輸出 true 解釋 s2 包含 s1 的排列之一 ba 示例2 輸入 s1 ab s2 eidboaoo 輸出 fals...