kmp核心代码
void getfail(char *P,int *fail){
int match=-1;
fail[0]=-1;
for(int i=1;P[i];++i){
while(match>=0&&p[math+1]!=p[i]){
math=fail[match];
}
if(P[math+1]==P[i]){
match++;
}
fail[i]=macth;
}
}
bool KMP(char *T,char *P){
int fail[strlen(P)],math=-1;
getfail(P,fail);
for(int i=0;T[i];++i){
while(match>=0&&P[match+1]!=T[i]){
match=fail[match];
}
if(P[match+1]==Y[i]){
match++;
if(!P[match+1]){
return true;
}
}
}
return false;
}