KMP模板

来源:互联网 发布:js json 第n个 编辑:程序博客网 时间:2024/05/29 09:49

计算模式串在原串中出现的次数

#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;int n,Next[maxn],fro[maxn];char mo[maxn],str[maxn],ans[maxn];void getNext(){    int i = 0,j = -1,len = strlen(mo);    while(i < len){        if(j == -1||mo[i] == mo[j]) Next[++i] = ++j;        else j = Next[j];    }}void kmp(){    int i = 0,j = 0,len1 = strlen(mo),len2 = strlen(str);    int ans = 0;    while(i < len2){        if(j == -1||mo[j] == str[i]){            j++;            i++;        }        else j = Next[j];        if(j == len1) ans++;    }    printf("%d\n",ans);}int main(){    int n,m,k;    while(~scanf("%s%s",mo,str)){        memset(Next,-1,sizeof(Next));        getNext();        kmp();    }    return 0;}
原创粉丝点击