题目大意:统计一个字符串的最小重复字段的字符数,如
“ abcabcabc ”的最小重复字段为“abc”,则对应字符数为 3 。
重点内容解题思路:由小到大求输入字符的长度的因数,每个因数为一个可能的重复字段。遍历每个字段的对应字符,出现不同则继续求下一个因数;全相同则退出循环,此时的因数即最小重复字段的字符数。
#include<iostream>
#include<string.h>
using namespace std;
int main() {
int n , comm , i , j , k , l , cho = 0;
char a[85];
cin >> n;
while(n--) {
cin >> a;
i=0;
stp:
if(i< strlen(a)) {
i++;
if( strlen(a) % (i) == 0 ) {
comm = i;
for(j = 0; j < comm ; j++) {
l = 1;
for( k = comm + j; k < strlen(a); k=l*comm + j ) {
if(a[j] == a[k]) cho = 1;
else { cho = 0 ; goto stp; }
l++;
}
}
}
else goto stp;
cout << comm <<endl;
}
if(n) { cout << endl;}
}
return 0;
}