擴充套件KMP的應用

2021-08-11 03:28:49 字數 752 閱讀 1159

擴充套件kmp的應用:

最長公共字首長度,記為extend[i](或者說,extend[i]為滿足s[i..i+z-1]==t[0..z-1]的最大的z值)。

擴充套件kmp可以用來解決很多字串問題,如求乙個字串的最長回文子串和最長重複子串。

/*

* 擴充套件kmp

* next[i]:x[i...m-1]的最長公共字首

* extend[i]:y[i...n-1]與x[0...m-1]的最長公共字首

*/void preekmp(char x, int m, int next)

next[1] = j;

int k = 1;

for (int i = 2; i < m; i++)

else

next[i] = j;

k = i;}}

return ;

}void ekmp(char x, int m, char y, int n, int next, int extend)

extend[0] = j;

int k = 0;

for (int i = 1; i < n; i++)

else

extend[i] = j;

k = i;}}

return ;

}

KMP演算法的擴充套件應用

這一篇介紹一下關於經典的字串匹配演算法kmp的擴充套件應用 在原始串的後面新增最少的字元生成乙個長字串,使長字串包含兩個原始串 時間複雜度 o n author lwl2020 date 2020 5 29 description 在原始串的後面新增最少的字元生成乙個長字串,使長字串包含兩個原始串 ...

擴充套件kmp的應用 Best Reward

best reward 題意 給定乙個長度為n的字串,問你能否將這個字串分成兩個字串,如果分成的字串是回文子串,那麼就會有價值,求分成兩個串的最大價值。題解 學習到一手擴充套件kmp預處理後,o 1 就能判斷分成的兩個串是否為回文子串。s1為原串,s2為s1翻轉之後的串,然後你對s2求s1的ex陣列...

KMP 擴充套件KMP

本文將不斷加入例題,稍安勿躁,今天的總結爭取9 30寫完.kmp,中文名字叫字串匹配,用於解決一類字串匹配問題.先下一些定義 首先我們先想一想 nxt i 對於求解問題有怎樣的幫助.我們對於每乙個 t i s 1 的位置都匹配一次,這樣子複雜度為 theta n m 的.考慮在暴力匹配中其實我們不一...