如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。
样例输入:HoHoHo
样例输出:2
本题巧妙地运用了x = m % n
其中m++
则z
会在0~n
之内循环,运用这个小小的算法进行周期比较,非常的巧妙。
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char str[100];
int i = 0, j = 0, length;
cin >> str;
length = strlen(str);
while (str[i] != '\0')
{
i++;
if (length % i == 0)
{
int ok = 1;
j = i;
while (j < length)
{
if (str[j] != str[j % i])
{
ok = 0;
break;
}
j++;
}
if (ok)
{
cout << "周期为:" << i << endl;
break;
}
}
}
return 0;
}