您的位置:首页 > 其它

字符串匹配 KMP(模板)

2017-06-20 21:13 330 查看
电脑准备重装一波,把模板都发一下

struct KMP
{
int a[1000100];
int b[11111];
int n,m;
int nextval[11111];
void init()
{
memset(nextval,0,sizeof(nextval));
}
void get_next() //next跳表
{
for(int i=1;i<m;i++)
{
int j=nextval[i];
while(j&&b[j]!=b[i])
j=nextval[j];
nextval[i+1]=b[i]==b[j]?j+1:0;
}
}
int find_aim() //匹配长度
{
int j=0;
for(int i=0;i<n;i++)
{
while(j&&b[j]!=a[i]) j=nextval[j];
if(b[j]==a[i]) j++;
if(j==m) return i-m+2;
}
return -1;
}
}T;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: