如果一个字符串可以由某个长度为k的字符串重复多次得到,则该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。
样例输入:HoHoHo
样例输出:2
[分析]
字符串可能有多个周期,但是只需求出最小的一个。可以从小到大枚举各个周期,一旦符合条件就立即输出。
#include <cstdio>
#include <cstring>
int main()
{
char word[100];
scanf("%s",word);
int nLen=strlen(word);
for (int i=1; i<=nLen; ++i)
{
if (nLen%i==0)// cycle string
{
int ok=1;
for (int j=i; j<nLen; ++j)
{
if (word[j%i]!=word[j])// i stands for cycle time
{
ok=0;
break;
}
}
if (ok)
{
printf("%d\n",i);
break;// this is the least cycle
}
}
}
return 0;
}