#include<bits/stdc++.h>
using namespace std;
string s="abababc",t="aba";
int nt[10000000];//vector<int>
void getnext(string t){
nt[0]=-1;
int i=0,j=nt[i];
while(i<=t.length())
if(j==-1||t[i]==t[j]) nt[++i]=++j;
else j=nt[j];
}
int find(string s,string t){
int i=0,j=0;
int ans=0;
while(i<s.size()){
while(j!=0&&s[i]!=t[j]) j=nt[j];
if(s[i]==t[j]) j++;
if(j==t.size()){
ans++;
j=0;
}
i++;
}
return ans;
}
int main(){
while(true){
cin>>s;
if(s=="#") break;
cin>>t;
getnext(t);
cout<<find(s,t)<<endl;
}
return 0;
}
(责任编辑:admin) |