标签:
学算法之后,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