字串常用演算法總結

2021-10-08 02:39:34 字數 388 閱讀 6547

1.manacher演算法

馬拉車演算法,在o(n)時間內解決尋找源字串的最長回文子串s的問題的演算法。樸素演算法情況下對於每乙個s[i]都要左右遍歷其最大回文子串,所以時間複雜度是o(n2)。

有錯誤,「從左往右計算陣列p[ ], mi為之前取得最大回文串的中心位置,而r是最大回文串能到達的最右端的值。」)

//返回源字串s的最長回文子串 

string manacher(string s)

//更新結果資料

if(p[i] > relen)

}return s.substr((recenter - relen) / 2 , relen - 1) ;

}

2.字串雜湊

3.字典樹

字串 演算法總結

1.字串的複製 char scopy char str1,const char str2 int main char scopy char str1,const char str2 str1 j 0 return str1 2.字串的回文 判斷字串是否是回文 include include usin...

字串演算法總結

易犯錯誤 1 a c a 輸入的是大寫 a c減成了小寫 a 導致陣列的下標越界,程式執行時發生段錯誤 2 由字串轉換為數字時只有當字元是一位的時候才可以直接 0 如 11 就不可以直接 0 3 由數字轉化為字串時也要注意是否是一位的,如11就不可以直接用 0 轉化 4 審題不細,漏輸出,漏條件 問...

字串演算法總結 模板

目錄 kmp模式匹配演算法 manacher最長回文子串演算法 給出長度n的主串和長度m的模式串進行模式匹配,複雜度o n m 預處理出失敗指標 最長公共前字尾 進行平攤為o 1 的轉移 int nxt maxn void build next char s if s j 1 s i nxt i j...