UVA - 455. Periodic Strings题解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/82155020

UVA - 455. Periodic Strings题解

欢迎访问我的Uva题解目录https://blog.csdn.net/richenyunqi/article/details/81149109

题目描述

UVA - 455. Periodic Strings题目描述

题意解析

求一个给定字符串的最小周期

算法设计

字符串周期 i 只可能是[1,字符串长度]之间能被字符串长度整除的数。从小到大枚举符合要求的数 i ,看看对于每个周期内的字符与第一个周期内的字符是否相同,第一个符合全部要求的 i 即为所求。

注意点

本题输出要求非常刁钻,要求每个输出的数字占一行,并且两个输出的数字之间有一个空行。注意最后一个输出的数后也需要一个换行符。

C++代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int N;
    scanf("%d",&N);
    string s;
    while(N--){
        cin>>s;
        int i=1;//周期
        for(;i<=s.size();++i){//枚举从1到s.size()之间所有的数作为周期
            if(s.size()%i==0){//周期必然可以被s.size()整除
                for(int k=i;k<s.size();++k)//枚举第一个周期以外的所有字符
                    if(s[k]!=s[k%i])//如果和第一个周期内的对应字符不同
                        goto loop;//进行跳转
                break;//找到了一个符合要求的周期,跳出循环
                loop:;//验证下一个周期
            }
        }
        printf("%d\n%s",i,N>0?"\n":"");//输出
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/richenyunqi/article/details/82155020