UVA 455-Periodic Strings
题目大意:一个字符串可以由某个长度为 k 的字符串重复得到,求最小周期 k 。如 abcabcabc 的周期为 3。
解题思路:找出与最后一个字符相同的字符,找出重复的字符串
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main(){
int i,n,m,j,x,y,l;
char s[100];
cin>>n;
for(i=0;i<n;i++){
cin>>s;
m=strlen(s);
for(j=0;j<m;j++){
if(s[j]==s[m-1]){
for(x=0;;x++){
if(s[x]!=s[m-1-j+x]){
x=-1;
break;
}
if(x==j)
break;
}
for(y=j+1;y<m;y++)
if(s[y-j-1]!=s[y])
{
x=-1;
break;
}
if(x==j)
{
break;
}
}
}
l=j+1;
cout<<l<<endl;
if(i!=n-1)
cout<<endl;
}
return 0;
}