题目简述
输入一个字符串,若该字符串可以由某个长度为K的字符串重复多次得到,则为周期串。求其最小的K
#include<iostream>
#include<cstring>
#define maxn 80 + 10
using namespace std;
char s[maxn];
//judge用于判断t是否是周期
int judge(char* s, int low, int t, int len){
//i+t<len是防止越界
for(int i = 0; i < len && i+t < len; i++){
if(s[low] != s[i+t])
return 0; //t不是周期
low++;
}
return 1; //成功找出周期
}
int main()
{
int n;
cin>>n;
while(n--){
cin>>s;
int len = strlen(s);
for(int i = 1; i <= len; i++){ //枚举,假设周期为i
if(len % i != 0)
continue;
if(judge(s,0,i,len)){
cout<<i<<endl;
break;
}
}
if(n)
cout<<endl;
}
}