问题描述:
如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例 如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。
输入一个长度不超过80的字符串,输出其最小周期。
解决方案:
#include<stdio.h>
#include<string.h>
int main(){
char p[81];
int i,j,k,l,flag;
printf("请输入字符串:");
gets(p);
l=strlen(p); //l代表字符串的长度
for(i=1;i<=l/2;i++){ //分割后的每个小字符串长度
flag=1; //标志
for(j=0;j<i;j++){ //分别比较小字符串的每个字符
for(k=i+j;k<l;k+=i){ //第一个小字符串分别与之后的每个小字符串比较
if(p[j] != p[k]){
flag=0;
break;
}
}
if(flag==0){
break;
}
}
if(flag==1){
printf("最小周期字符串:");
for(k=0;k<i;k++){
printf("%c",p[k]);
}
break;
}
}
}