uva455 Periodic String

题目:求一个串的最小循环节。

枚举循环节的长度,匹配判断,找到第一组解即为最小。
算是暴力枚举每个可能的位置是不是形成周期的长度,注意先判断数长度是不是它的约数,能不能使它形成周期的形式!

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        char s[81];
        cin>>s;
        int len=strlen(s);
        for(int j,i=1;i<len;i++)
        {
            if(len%i==0)//先判断这个数有哪些他的约数可以形成周期的长度。
            {
                for(j=i;j<len;j++)
                {
                    if(s[j]!=s[j%i])//记住周期的判断法就是以当前的位置除以周期长度就是每个位置对应
                        break;

                }
                if(j==len)
                {
                      cout<<i<<endl;
                      break;
                }
            }
        }
    }
    return 0;
}

你可能感兴趣的:(using,strlen)