一维

KMP算法next数组的求法

  1. 初始化
nxt[1]=0;
for(int i=2,j=0;i<=n;i++){
    while(j>0&&a[i]!=a[j+1]) j=nxt[j];
    if(a[i]==a[j+1]) j++;
    nxt[i]=j;
} 

KMP算法f数组的求法

for(int i=1,j=0;i<=m;i++){
    while(j>0&&(j==n||b[i]!=a[j+1])) j=nxt[j];
    if(b[i]==a[j+1]) j++;
    f[i]=j;
//    if(f[i]==n),此时就是A在B中的某一次出现 
}

 二维

posted on 2022-03-12 11:09  我疯故我在  阅读(47)  评论(0)    收藏  举报