如果一个字符串以某个长度为k的字符串重复多次得到,我们说该串以k为周期,例如:abcabcabcabc 以3为周期,(注意它也以6和12为周期),输入一个长度不超过80的字符串,输出最小周期。
思路是从小到大枚举各个周期,符合条件就跳出。
#include <cstdio>
#include <cstring>
int main()
{
//freopen("a.txt","r",stdin);
char s[100];
int flag;
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
for(int i=1;i<len;i++)
{
if(len%i==0) //枚举i为周期
{
flag=1;
for(int j=i;j<len;j++) //比较当前字符与第一个周期中的对应字符是否相等,
{
if(s[j]!=s[j%i]) {flag=0;break;}
}
}
if(flag) {printf("%d\n",i);break;}
}
}
return 0;
}