求出一个字符串中,它是一个子串的多少次方,要求最大
用kmp算法求出next数组,当len%(len-next[len])==0时候,说明len-next[len]即为所能匹配的子串
kmp算法详见随笔里面有
#include <stdio.h>
#include <string.h>
char s[1000010];
int next[1000010];
int len;
int main()
{
int i,j;
while(1)
{
scanf("%s",s);
if(s[0]=='.')break;
len=strlen(s);
i=0;next[0]=-1;j=-1;
while(i<len)
{
if(j==-1||s[i]==s[j])
{
++i;
++j;
next[i]=j;
}else j=next[j];
}
if(len%(len-next[len])==0)
{
printf("%d\n",len/(len-next[len]));
}else printf("1\n");
}
return 0;
}