如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例 如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。 输入一个长度不超过80的字符串,输出其最小周期。
#include <stdio.h>
#include<string.h>
char arr[81],tem[81];
int main()
{
int i = 1, n = 0, len = 0, j = 0;
scanf("%s", arr); len = strlen(arr);
for (i = 1; i <= len / 2; i++)
{
memset(tem,0,sizeof(tem));//使用过临时数组后重置为0
if (len % i == 0) //只有临时数组长度能被输入数组长度整除才能进行,否则跳过这次循环
{
for (j = 0; j < len; j++)
{//将前i个字符复制到临时数组
if (n == i) { n = 0; }
tem[j] = arr[n];
n++;
}
tem[j] == '\0';n = 0;
//printf("%s\n", tem);
}
else continue;
if (strcmp(arr,tem) == 0) break;//找到最小周期后跳过
}
printf("%s's T is %d\n",arr,i);
return 0;
}