程序员的一生时间90%是用在编程上,而剩余的10%是活在世界上。
//kmp最强模板
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void qnext(int next[],char *zi)
{
int i,k;
next[0] = 0;
for(i=1,k=0;zi[i];i++)
{
while(k>0&&zi[k]!=zi[i])
{
k = next[k-1];
}
if(zi[k]==zi[i])k++;
next[i] = k;
}
}
int kmp(int m,char mu[],char zi[],int *next)
{
int i,k;
int cnt = 0;
for( i=0,k=0;mu[i];i++)
{
while(k>0&&zi[k]!=mu[i])k = next[k-1];
if(zi[k]==mu[i])k++;
if(k==m) {cnt++;}
}
return cnt;//此处为求zi串在mu串中次数
}
int main()
{
int next[301]={0};//特殊数据 aabaabaa 12121
char zi[300],mu[300];
//cout << "Hello world!" << endl;
scanf("%s %s",mu,zi);
qnext(next,zi);
int m = strlen(zi);
printf("%d\n",kmp(m,mu,zi,next));
return 0;
}