侧边栏
首页代码

习题3-4 周期串(Periodic Strings, UVa455)

#include<stdio.h>
#include<string.h>
char s[100];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%s",s);
        int t = 1;
        while(1)
        {
            int len = strlen(s),c = 0;;
            for(int i = 0;i < len;i++)
            {
                if(s[i] == s[(i + t)%len]) c++;
            }
            if(c == len) break;
            t++;
        }
        printf("%d\n",t);
        if(T != 0) printf("\n");
    }
    return 0;
}

(i + t)%len 的作用是防止i+t越界读到/0 

原理是将输入的字符串看成环形串 如果i+t大于了len 就会从头开始 这样这个字符串就是一个环 而周期在环上是不变的 

posted @ 2020-09-24 10:08  AlexStraightUp  阅读(127)  评论(0)    收藏  举报
页脚HTML代码