演算法題 字串的排列

2022-06-29 05:06:11 字數 696 閱讀 7350

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。

換句話說,第乙個字串的排列之一是第二個字串的子串。

示例1:

輸入: s1 = "ab" s2 = "eidbaooo"

輸出: true

解釋: s2 包含 s1 的排列之一 ("ba").

示例2:

輸入: s1= "ab" s2 = "eidboaoo"

輸出: false

注意:輸入的字串只包含小寫字母

兩個字串的長度都在 [1, 10,000] 之間

乙個字串s的排列指s的每個字元出現都相等,可以用雜湊表來儲存s每個字元的次數,又由於只包含小寫字母,可考慮用乙個長度26的陣列替代雜湊表。

然後可以用乙個s長度的區間依次遍歷,檢查該區間是否每個字元頻次都與s相等。

class solution 

for (int i = 0, j = 0;j < s2.size();)

}if (yes) return true;

tmp_count[s2[i]-'a']--;

++i;

}++j;

}return false;

}};

複雜度

時間複雜度:o(26n)

空間複雜度:o(1)

演算法題 字串的全排列

問題 編寫乙個函式,用它把字串中所有的字元的各種排列形式全部顯示出來,即用給定字元做全排列。如 比如給定字串 hat 函式輸出全排列 tha,aht,tah,ath,hta,hat.演算法如下 void dopermute char in,char out,int used,int length,i...

OJ題 字串的排列 全排列問題

題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。解法一 c 中本身有全排列的函式 next permutation 標頭檔案函式原型 bool next permu...

演算法題 字串旋轉

對於乙個字串,和字串中的某一位置,請設計乙個演算法,將包括i位置在內的左側部分移動到右邊,將右側部分移動到左邊。給定字串a和它的長度n以及特定位置p,請返回旋轉後的結果。測試樣例 abcdefgh 8,4 返回 fghabcde 正常解法 1.用 按特定位置訪問逐字元拷貝 class stringr...