如果一个字符串可以由某个长度为k的字符串重复多次得到,则该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。
样例输入:helpshelpshelpshelps
样例输入:helpshelpshelpshelps
样例输出:5
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void cycle_length(char *a,int length)
{
int i,j;
int flag;
for (i=1;i<length;i++)
{
if (length%i == 0) //如果i为最小周期,那么字符串长度必定是i的整数倍
{
flag = 1;
for (j=i;j<length;j++) //判断数组是否已i为周期
{
if (a[j-i] != a[j])
{
flag = 0;
}
else
break;
}
if (flag)
{
printf("%d \n",i); //输出对应的周期
break; //如果flag不为0,那么退出循环
}
}
}
}
//测试函数
void main()
{
char *a="abcabcabc";
cycle_length(a,strlen(a));
system("pause");
}