KMP 模板

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

char a[10005],b[1000005];
int nexta[10005];

void getnext(){
int len=strlen(a);
nexta[0]=-1;
int k=-1;
int j=0;

while(j<len)
{
if(k==-1||a[j]==a[k]){
++j;
++k;
if(a[j]!=a[k])
nexta[j]=k;
else
nexta[j]=nexta[k];
}
else
k=nexta[k];
}
}

int kmp()
{
int len_a=strlen(a);
int len_b=strlen(b);
int count=0;
int j=0;
int i=0;

while(j<len_b){
if(i==-1||a[i]==b[j]){
i++;
j++;
}
else
i=nexta[i];
}
}
}


你可能感兴趣的:(KMP 模板)