在一个周期字符串中找出最小周期
最注意一点,周期一定要是被串长度除尽的,可能在没除尽的情况下也全部匹配上...
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 int t,len,cnt; 5 char s[100]; 6 bool flag; 7 void fuc() 8 { 9 len=strlen(s); 10 for(int i=0;i<len;i++) 11 if(len%(i+1)==0)//!! 12 { 13 flag=1; 14 for(int j=0,k=0;j<len;j++) 15 { 16 if(s[j]!=s[k]) 17 { 18 flag=0; break; 19 } 20 if(k==i) k=0; 21 else k++; 22 } 23 if(flag) 24 { 25 cnt=i+1; return; 26 } 27 } 28 } 29 int main() 30 { 31 while(cin>>t) 32 while(t--) 33 { 34 cin>>s; 35 fuc(); 36 cout<<cnt<<endl; 37 if(t) cout<<endl; 38 } 39 }