/*周期串(暴力穷举法)*/
#include <stdio.h>
#include<strings.h>
int main()
{
char s[85];
scanf("%s",s);
int a,len=0; //a是周期长度,len是字符串长度
len = strlen(s);
//printf("%d\n",len);
int flag=1;
for(a=1;a<len;a++) //暴力,逐个测试找出周期a
{
for(int i=0;s[i+a];i++) //以a为单位长度,测试是否周期串
{
if(s[i+a]!=s[i]) //不符合周期串
{
flag=0;
break;
}
else flag=1; //防止前面的影响
}
if(flag)
{
printf("%d\n",a);
break; //找到最小周期串,就直接输出,不用再找更大的周期了
}
}
if(!flag) printf("%d\n",a);//周期串是本身
return 0;
}
网上还有篇比我的更短,可以看看:
https://blog.csdn.net/sinat_38816924/article/details/82783377
写下思路逻辑确实帮助了我大忙。