擴充套件KMP

2021-07-16 10:57:26 字數 488 閱讀 3645

拖了這麼久,終於打出擴充套件kmp了。

**並不長,但是細節很多。最好把模板背下來,實在背不下來就根據原理去推。

相比於kmp來說擴充套件kmp的應用範圍更廣,更靈活。它的ext[i]與kmp的next[i]的區別就是next[i]表示長度最大的一段s[i-next[i]+1…i]=t[1…next[i]],ext[i]表示s[i…i+ext[i]-1]=t[1…ext[i]]。

其實本人認為exkmp有很多思想是與manacher相似的,比如記錄乙個能擴充套件到的最遠的距離,分類討論等等。

好了,這裡就給出模板了。

int

k=0,p=0;

memset(nxt,0,sizeof(nxt));

memset(ext,0,sizeof(ext));

nxt[1]=n;

fo(i,2,n)

}k=p=0;

fo(i,1,n)

}

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 演算法 2017 年 03 月 12 日 閱讀 256 技術 前文已經介紹了經典的 kmp 演算法,本文繼續介紹 kmp 演算法的擴充套件,即擴充套件 kmp 演算法。問題定義 給定兩個字串 s 和 t 長度分別為 n 和 m 下標從 0 開始,定義extend i 等於s i s...