【模板】KMP

来源:互联网 发布:知乎童谣诈骗事件介绍 编辑:程序博客网 时间:2024/06/06 05:24

求nex数组:

void getnex() {     nex[0]=-1;     for(int i=1;i<len1;i++)     {         int j=nex[i];         while(j!=-1 && a[j]!=a[i]) j=nex[j];         nex[i+1]=j+1;     } } 

匹配:

int i=0,j=0,ans=0;     while(i<len2)     {         if(j==-1 || a[j]==s[i])         {             i++;j++;         }         else j=nex[j];         if(j==len1) {ans++;j=nex[j];}     } 
原创粉丝点击