题目描述:
如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabc以3为周期(同时以6,12为周期)。
输入一个长度不超过80的字符串,输出其最小周期。
#include<stdio.h>
#define maxn 85
#include<string.h>
int main()
{
int T,i,t;
char a[maxn];
scanf("%d",&t);
while(t--)
{
memset(a,0,sizeof(a));
scanf("%s",&a);
int len=strlen(a);//strlen这个函数得出的是字符串的长度(不包括“\0”)
int j;
for(i=1;i<=len;++i)//实际上数组的下标是从零开始的;
if(len%i==0)//可以直接利用此时的i进行下面的判断,更有利于计算 最短周期;
{
for(j=i;j<=len;j++)//通过这个循环,用a[i]这个变量与a[j%i]变量依次进行比较,j%i也就是一个周期
if(a[j]!=a[j%i])
break;
if(j==len)
{
printf("%d\n",i);
break;
}
}
if(t)
printf("\n");
}
}