分析:
由周期串的规律可以得出,
字符总数 总能整除 周期串字符数,
则从第一个(i=0)字符开始遍历,遇到字符串大小 size%i==0,则有可能周期数为 i 。
检验:可以通过该字符串与后面的字符串对比,如果全部都相同,则为周期串
#include<iostream>
using namespace std;
int main() {
char str[256];
int sz, i, j, k;
bool flag = 0;//字符串匹配失败 flag=1
cin >> str;
sz = strlen(str); //获取字符串大小
for (i = 1; i < sz; i++) {
flag = 0; //初始化标志
if (sz%i == 0) { // 如果 字符数可以整除i,则i有可能是字符串的周期
for (j = i; j < sz; j*=2) { // 与后面的字符串对比,检测是否为周期串
for (k = 0; k < i; k++) {
if (str[k] != str[j + k]) {
flag = 1; // 不是周期串
break;
}
}
if (flag == 1)break;
}
if (flag == 0) { //找到周期串
cout << i;
break;
}
}
}
return 0;
}