uva 455 Periodic Strings

好吧,虽然这道题很水,但是我自己也想了很久,而且自己想的还有很多bug,

这道题的正确思路是:

要我们找一个字符串的最小周期

(1)首先这个周期一定要被字符长度整除,但可以被整除的不一定是周期(枚举周期)

(2)枚举周期之后进行字符检查,看看其余字符是否符合周期规律,找到之后输出当前周期后立刻跳出。

#include<stdio.h>
#include<string.h>
int main()
{
    int n,i,k,len;
    char s[100];
    scanf("%d",&n);
    while(n--)
    {

        scanf("%s",s);
        len=strlen(s);
        for(i=1; i<=len; i++) //i是用来计周期的
        {
            if(len%i==0)//周期一定会被长度整除
            {
                for(k=i; k<len; k++)
                {
                    if(s[k]!=s[k%i])
                    {
                        break;
                    }
                }
                if(k==len)
                {
                    printf("%d\n",i);
                    break;
                }
            }
        }
        if(n>0) printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xdyzengqian/article/details/80572002