z_function模版

z[i]表示以i位置的子串前綴和原字符串前綴最大匹配個數

void z_function(){
	int l=0,r=0;
	for(int i=1;i<n;++i){
		if(i<=r)
			z[i]=min(r-i+1,z[i-l]);
		while(i+z[i]<n&&s[i+z[i]]==s[z[i]]) ++z[i];
		if(z[i]+i-1>r) l=i,r=z[i]+i-1;
	}
}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章