剪花布条
#include<bits/stdc++.h> using namespace std; #define maxn 1005 char str[maxn],son[maxn]; int nt[maxn],len1,len2,ans; void getnext() { int i=0,j=-1; nt[0]=-1; while(i<len2) { if(j==-1||son[i]==son[j]) { i++; j++; nt[i]=j; } else j=nt[j]; } } void kmp() { int i=0,j=0; while(i<len1) { if(j==-1||son[j]==str[i]) { i++; j++; } else j=nt[j]; if(j==len2) { ans++; j=0; } } } int main() { while(cin>>str>>son) { ans=0; if(strcmp(str,"#")==0) break; len1=strlen(str); len2=strlen(son); getnext(); kmp(); cout<<ans<<endl; } return 0; }