「学习笔记」扩展KMP (简)

「学习笔记」扩展KMP (简)

【模板】扩展 KMP(Z 函数)

用途

求文本串 \(s\) 的每一个后缀与模式串 \(t\)\(LCP\) (最长公共前缀).


过程

思路 : 对新的位置匹配时利用前面已匹配的信息.

维护一个一匹配的右边界, 每次根据前面的信息取得一个初始匹配值, 然后再对右边界进行拓展. (和 Manachar 类似)


代码

#include

using namespace std;

typedef long long ll;

const int _=2e7+7;

int n,m,z[_],p[_];
string s,t;

void Init(){
	cin>>s; n=s.size();
	cin>>t; m=t.size();
}

void Pre(){
	int tms=0;
	int l=0,r=0;
	for(int i=1;ir) l=i,r=i+z[i]-1;
	}

	//cout<r) l=i,r=i+p[i]-1;
	}

	//cout<

你可能感兴趣的:(「学习笔记」扩展KMP (简))