擴充套件kmp

2021-09-26 03:12:01 字數 678 閱讀 8700

/*

擴充套件kmp

求對於原串s1的每乙個字尾子串與模式串s2的最長公共字首

nxt[i]表示為s2中以i為起點的字尾字串和s2的最長公共字首長度

extend[i]表示為以s1中以i為起點的字尾字串和s2的最長公共字首長度

複雜度:o(n+m)

*/#include #include using namespace std;

int nxt[100005],extend[100005];

void get_next(string a)

nxt[1] = i;

po = 1;

for (i = 2; i < len; i++)

else

nxt[i] = j;

po = i;

} }}void exkmp(string a,string b)

extend[0] = i;

po = 0;//初始化po的位置

for(i = 1; i < len1; i++)

extend[i] = j;

po = i;//更新po的位置

} }}int main()

for (int i = 0 ; i < len1; i++)

return 0;

}

KMP 擴充套件KMP

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

擴充套件kmp

出自 2 i k l 1 p k,即i l p。這時,首先可以知道a i.p 和b 0.p i 是相等的 因為a i.p b i k.p k 而i k l 1 p k,由b 0.l 1 b i k.i k l 1 可得b 0.p i b i k.p k 即a i.p b 0.p i 然後,對於a p...

擴充套件KMP

拖了這麼久,終於打出擴充套件kmp了。並不長,但是細節很多。最好把模板背下來,實在背不下來就根據原理去推。相比於kmp來說擴充套件kmp的應用範圍更廣,更靈活。它的ext i 與kmp的next i 的區別就是next i 表示長度最大的一段s i next i 1 i t 1 next i ext...