A character string is said to have period k if it can be formed by
concatenating one or more repetitions of another string of length k.
For example, the string ”abcabcabcabc” has period 3, since it is
formed by 4 repetitions of the string ”abc”. It also has periods 6
(two repetitions of ”abcabc”) and 12 (one repetition of
”abcabcabcabc”). Write a program to read a character string and
determine its smallest period.Input
The first line oif the input file
will contain a single integer N indicating how many test case that
your program will test followed by a blank line. Each test case will
contain a single character string of up to 80 non-blank characters.
Two consecutive input will separated by a blank line.Output
An integer denoting the smallest period of the input string for each
input. Two consecutive output are separated by a blank line.Sample Input
1HoHoHo
Sample Output
2
#include
#include
#include
#include
using namespace std;
int main()
{
int N,l=1;scanf("%d",&N);
while(N--){
if(!l) cout<if(l){
l=0;
}
int flag=0;
char s[100];
cin>>s;
int num=strlen(s);
if(num==1) {//一定一定不要漏掉只有一个字母的时候啊,或者让flag初始值为1
cout<<"1"<continue;
}
int i=1,k,f=0;
while(!f&&i//f:如果扫到最后一个字符退出循环
if(s[i]!=s[0]){
i++;flag=i;continue;
}
else{
flag=i;
int m=0;
for( k=i;k<strlen(s);k++){
if(s[k]!=s[m]){
flag=k;i=flag;break;
}
if(m1)
m++;
else m=0;
}
if(k==strlen(s)){
if(m)//串最后一个字母没有到重复段的最后字母,比如hohoh
flag=num;
f=1;
break;
}//if
}//else
}//while
cout<return 0;
}