如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。 例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的字符串,输出其最小周期。
#include <stdio.h>
#include <string.h>
#define MAX_NUM 100
int main(void)
{
int N ;
freopen("input.txt" , "r" , stdin);
freopen("output.txt" , "w" , stdout);
scanf("%d" , &N);
while(N--)
{
char buff[MAX_NUM];
int i , p ;
scanf("%s" , buff);
for( p = 1 ; p < strlen(buff) ; p++)
{
if( strlen(buff)%p != 0)
{
continue;
}
for( i = 0 ; i < p ; i++)
{
int k = i ;
char ch = buff[i];
int flag = 1;
//对周期进行验证
while( k < strlen(buff))
{
if(ch != buff[k])
{
flag = 0 ;
break;
}
k+=p ;
}
//扩大周期
if( !flag)
{
break;
}
}
//遍历到了头,最小周期是p
if( i == p)
{
break;
}
}
printf("%d\n" , p );
if( N != 0)
{
printf("\n");
}
}
return 0 ;
}