#include<stdio.h>
#include<string.h>
char s[1000001];
int next[1000001];
int main()
{
for(;;)
{
scanf("%s",s);
if(s[0]=='.')break;
next[0]=-1;
int i=0,k=-1,len=strlen(s);
while(i<len)
{
if(k==-1||s[i]==s[k])
{
i++;
k++;
next[i]=k;
}
else k=next[k];
}
int ans=0;
int x,y,z,temp=len-next[len];
x=len;
for(;;)
{
if(next[x]==0||next[x]==-1){ans++;break;}
else if(x-next[x]==temp&&next[x]*2>=x){ans++;x=next[x];}
else {ans=1;break;}
}
printf("%d\n",ans);
}
return 0;
}
POJ2406Power Strings KMP算法
最新推荐文章于 2017-11-27 13:16:25 发布