标签:
学算法之后,Ac的第一道题。
分析:当i%(i-p[i])==0&&p[i]!=0时,字符串结束循环。并且,偱环节长度为 i-p[i],循环次数为 i/(i-p[i]).
#include<stdio.h>
#include<string.h>
int len;
int p[1000010];
char str[1000010];
void getp()
{
int i=0,j=-1;
p[i]=j;
while(i<len)
{
if(j==-1||str[i]==str[j])
{
i++,j++;
p[i]=j;
}
else
j=p[j];
}
}
int main()
{
while(~scanf("%s",str))
{
int k;
if(str[0]=='.')//当输入'.'时,跳出循环
break;
len=strlen(str);
getp();//求出P【】
if((len)%(len-p[len])==0&&p[len]!=0)//判断是否循环
printf("%d\n",(len)/(len-p[len]));
else//当字符串不偱环时输出 1
printf("1\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/zm_11/article/details/47341269