/* 输入字符串,求期最小周期
如,输入: abcabcabcabc
输入: 3
*/
#include<stdio.h>
#include<string.h>
#define MAXN 100+10
main()
{
char s[MAXN];
int n, k, yes=0, i, j ; //k用来枚举周期,从小到大
gets(s);
n=strlen(s); //n为字符串长度
for(k=1; k<=n; k++)
{
if(n%k!=0) break; //若k为周期,则n一定能被k整除
yes=1;
for(i=0; i<k; i++) //想一想,为什么写 i<k ,不写i<n?
{ for(j=i+k; j<n ;j+=k)
if(s[i]!=s[j]) //证明k不是周期
{ yes=0;
break;
}
if(!yes) break;
}
if(yes) { printf("%d", k); break;}
}
if(!yes) printf("%d",n);
return 0;
}
输入字符串,求期最小周期
最新推荐文章于 2024-05-20 18:25:10 发布