题意:
求子串出现最多的次数。
明白kmp数组的next数组。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std ;
char st[1000005];
int next[1000005];
int main()
{
int len,t;
while(scanf("%s",st),st[0]!='.'){
len=strlen(st);
int i=0,j=-1,ans;
memset(next,-1,sizeof(next));
for(i=1;st[i];i++){
while(j>=0&&st[i]!=st[j+1]) j=next[j];
if(st[i]==st[j+1]) next[i]=++j;
}
t=len%(len-1-next[len-1]);
ans=len/(len-1-next[len-1]);
if(t) ans=1;
printf("%d\n",ans);
}
return 0 ;
}