// pat.cpp : 定义控制台应用程序的
//#include "stdafx.h"
#include"stdio.h"
#include<iostream>
#include<string>
using namespace std;
typedef long long ll;
const int maxn=100;
string p,t;
int nextval[1000001];
void getnext(string s){
int len=s.length();
int j=-1;
nextval[0]=-1;
for(int i=1;i<len;i++)
{if(j!=-1&&s[i]!=s[j+1])
{j=nextval[j];}
if(s[i]==s[j+1])j++;
nextval[i]=j;
}
}
int cal(string t,string p){
getnext(p);
int n=t.length();
int m=p.length();
int j=-1;
int ans=0;
for(int i=0;i<n;i++){
while(j!=-1&&t[i]!=p[j+1])j=nextval[j];
if(t[i]==p[j+1])j++;
if(j==m-1){
ans++;
j=nextval[j];
}
}
return ans;
}
int main(){
//freopen("c://jin.txt","r",stdin);
while(cin>>t>>p){
cout<<cal(t,p)<<endl;
}
//freopen("CON","r",stdin);
//system("pause");
return 0;
}
kmp算法统计字符串出现的次数
原文作者:KMP算法
原文地址: https://blog.csdn.net/qq_30339595/article/details/79393649
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/qq_30339595/article/details/79393649
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。