Periodic Strings |
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
1 HoHoHo
Sample Output
2
就是求字符串的最小周期,注意格式就好。
#include<iostream> #include<string> #include<cstdio> using namespace std; int main() { string s; int n; scanf("%d",&n); while(n--) { getchar(); cin>>s; string ss=s; int i,j,k=1; for( i=1;i<s.size();i++) { string s1=s.substr(0,i); int flag=1; for( j=i;j<s.size();j+=i) { string s2=s.substr(j,i); if(s1!=s2){flag=0;break;} } if(flag){cout<<i<<endl;k=0;break;} } if(k)cout<<s.size()<<endl; if(n!=0)cout<<endl; } return 0; }