**周期串-算法竞赛习题3-4:**如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。
例如,abcabcabcabc以3为周期,(注意,它也以6和12为周期)。
**要求:**输入一个长度不超过80的字符串,输出其最小周期。
#include <iostream>
using namespace std;
int main()
{
char str[101];
cin.getline(str, 10000); //字符串输入方法
int i, j, flag = 1; //i记录周期长度,j记录从第二个周期开始字符的位置
int len = strlen(str); //len为字符串长度
for (i = 1; i <= len; i++)
if (len % i == 0) //字符串的长度一定可以被周期整除
{
flag = 1;
//检测字符串是否具有周期性
for (j = i; j < len; j++) //str[i]为第二周期的第一个字符
{
if (str[j] != str[j % i])
{
flag = 0;
break;
}
}
if (flag) //找到周期跳出
break;
}
cout << i << endl;
return 0;
}
思路在代码注释处已经给出。