题目描述
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如abcabcabcabc以3为周期(当然他也以6,12为周期)。输入一个长度不超过100000的串,输出他的最小周期。
输入
多组测试数据,每组仅一行为一个仅有大写字母组成的字符串。
输出
***加粗样式***对于每组数据输出该字符串的最小周期。
样例输入
HOHO
样例输出
2
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[100010];
int main()
{
while (scanf("%s", a) != EOF)
{
int i, j, flag = 0;
int len = strlen(a);
for (i = 1; i <= len; i++)
{
if (len%i == 0)//因为是周期串肯定成周期 所以整除
{
flag = 1;
for (j = i; j < len; j++)
{
if (a[j] != a[j%i])//a[i]!=a[0]
{
flag = 0;
}
}
}
if (flag)
{
printf("%d\n", i);
break;//不退出会输出所有
}
}
}
return 0;
}