题目:如果一个字符串可以由某个长度为k的字符串重复多次得到, 则称该串以k为周期。 例
如, abcabcabcabc以3为周期( 注意, 它也以6和12为周期) 。
输入一个长度不超过80的字符串, 输出其最小周期。
思路:将字符串按每个部分n个字符等分,然后看每一个部分对应地字符是否相等。最小周期即最小n。
代码如下:
#include <stdio.h>
#include <string.h>
#define maxn 90
char s[maxn];
int main()
{
int n,first1 = 1,first2 = 1;
scanf("%d",&n);printf("\n");
while(n--){
int i,j,k=0;
if(first1) first1 = 0;
else printf("\n");
scanf("%s",s);
for(i = 2; i < strlen(s); i++){
if(strlen(s)%i) continue; //判断字符串能否按i个字符等分
for(j = 0; j < i; j++){
for(k = j+i; k < strlen(s); k=k+i) if(s[j] != s[k]) break;
if(k < strlen(s)) break;
}
if(j == i) break;
}
if(first2) first2 = 0;
else printf("\n");
printf("%d\n",i);
}
return 0;
}
总结:提交之后一直是WA,但是调试没问题,我一直在想是不是输入输出格式的问题,但是怎么改都不对…