题目:https://vjudge.net/problem/UVA-455
看了评论区的方法,由于给的串肯定是完整周期的,因此环绕起来就是更多周期的串。利用类似周期图像平移N个周期图像不变的方法,从T=1开始测试,所有字符通过测试时的T就是正确周期。
关键步骤: if(str[i]==str[(i+t)%len])
另:需要看清楚题目要求的输入输出格式,此题要求每个结果间空一行(除了最后一行)
//周期串,使用环形串的方法求解
#include<iostream>
#include<cstring>
using namespace std;
int main(void)
{
int N;
cin>>N;
string str;
while(N--){
cin >> str;
int len = str.size();
int t=1;
while(1){
int c = 0;
for (int i = 0;i<len;i++)
{
if(str[i]==str[(i+t)%len])
c++;
}
if(c==len)
break;
t++;
}
cout << t << endl;
if(N!=0)
cout << endl;
}
// system("pause");
return 0;
}