KMP 算法。。。 字符串匹配 ,复杂度 O(n+m)

来源:互联网 发布:中世纪全面战争优化9 编辑:程序博客网 时间:2024/05/17 07:14
// KMP 统计出现的次数int n, m; char w[10100];char t[1001000];int next[10100];void  getnext(){   int j = 0;   next[1]= 0;   for(int i=2; i<= m;i++){      while(j>0&&w[j+1]!=w[i]) j = next[j];      if(w[j+1]==w[i]) j+=1;      next[i] = j;   }}int kmp(){   int j=0;   int cnt  = 0;        for(int i=1 ;i<=n;i++){         while(j>0&&w[j+1]!=t[i]) j = next[j];         if(w[j+1]==t[i]) j+=1; if(j==m){   cnt ++;   j=next[j] ;  }      }  return cnt ;}