// 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 ;
}
KMP 算法。。。 字符串匹配 ,复杂度 O(n+m)
最新推荐文章于 2022-10-03 15:30:24 发布