周期串
Periodic Strings,UVa455
如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该字符串以k为周期。例如,abcabcabc以3为周期(注意,它也以6和12为周期)。
输入:
13132 13132 13132
输出:
6
#include<stdio.h>
#include<string.h>
#define maxn 100
int main()
{
char str[maxn];
int len,i,j,flag;
gets(str);
len = strlen(str);
for(i=1; i<=len; i++) //假设最小周期为i
{
if(len%i==0) //字符串长度一定是周期的倍数
{
flag=1;
for(j=i; j<len; j++) //从周期i的下一个位置j开始
if(str[j]!=str[j%i]) //和前面假设的周期串中字符逐个比较
{
flag=0; //如果发现出现一个不相等了,说明这个i不是周期
break; //退出循环比较,递增假设的周期i
}
if(flag) //循环比较完,仍找不到不相等的就可以确定i是最小周期
{
printf("%d\n",i);
break;
}
}
}
return 0;
}