【UVA 455】 Periodic Strings

题目描述:传送门

处理周期串中要注意的问题:

1.周期串的周期必定是串长的整数倍
2.只扫描是否相等可能忽略的情况(不判整数倍):
                                        abcdabcdab 

题解:

#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d", &n);
    while(n--)
    {
        char s[81];
        scanf("%s", s);
        int mix = 1;
        int len = strlen(s);
        for(int i = 1; s[i] != '\0'; i++)
        {
            if(s[i] != s[i%mix])
            {
                while(len % (++mix));    //注意点:周期串的周期必定是串长的整数倍
                i = mix - 1;
            }
        }
        if(n)
            printf("%d\n\n", mix);
        else
            printf("%d\n",mix);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/sunrisepeak/p/9812127.html