题目大意:一个字符串可以由某个长度为 k 的字符串重复得到,求最小周期 k 。如 abcabcabc 的周期为 3。
解题思路:从周期 1 开始枚举,比较相邻两个周期是否对应相同,遍历结束输出。
#include <iostream>
#include <string.h>
using namespace std;
char a[100];
int main() {
int T;
cin >> T;
while (T--) {
memset (a, '0', sizeof(a));
cin >> a;
int tag = 0, i, j;
for (i = 1; i <= strlen(a); i++) {
if (strlen(a) % i == 0) {
tag = 1;
for (j = 0; a[j+i] != '\0'; j++)
if (a[j] != a[j+i]) {
tag = 0; break;
}
}
if (tag) break;
}
cout << i << endl;
if (T) cout << endl;
}
return 0;
}