void getNex(){
lenA = strlen(A);
lenB = strlen(B);
nex[0] = -1;
ll i = 0,j = -1;
while(i < lenB){
if(j == -1 || B[i] == B[j]){
++j,++i;
if(B[i]!=B[j]){
nex[i] = j;
}
else{
nex[i] = nex[j];
}
}
else{
j = nex[j];
}
}
}
void kmpSearch(){
ll i = 0;
ll j = 0;
while(i < lenA){
if(j==-1 || A[i] == B[j]){
++i,++j;
if(j >= lenB){
vis[i] = 1;
j = nex[j];
}
}
else{
j = nex[j];//求多次匹配
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-1300942.html