题目描述
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如abcabc以3为周期(当然他也以6,12为周期)。输入一个长度不超过80的串,输出他的最小周期。
输入
多组测试数据,每组仅一行为一个仅有大写字母组成的字符串。
输出
对于每组数据输出该字符串的最小周期。
样例输入 Copy
HOHO
样例输出 Copy
2
以下是我的代码,最终判错错误率83%,请众神们指点问题出在哪里啦
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[80];
while (cin >> s)
{
int len = strlen(s);
bool f1 = false;
for (int k = 0;k<len; k++)
{
if (s[k] < 'A' || s[k]>'Z')
{
f1 = true;
break;
}
}
if (f1)
continue;
for (int i = 1; i <= len; i++)
{
bool f2 = true;
for(int j=i;j<len;j++)
if (s[j] != s[j % i])
{
f2 = false;
break;
}
if (f2)
{
cout << i << endl;
break;
}
}
}
return 0;
}