周期串Plus(字符串周期水题ZCMU1986)

1986: 周期串plus

Description

如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如abcabcabcabc以3为周期(当然他也以6,12为周期)。输入一个长度不超过100000的串,输出他的最小周期。

Input

多组测试数据,每组仅一行为一个仅有大写字母组成的字符串。

Output

对于每组数据输出该字符串的最小周期。

Sample Input

HOHO

Sample Output

2

思路:从1开始暴力找周期(最大只找到len/2,防止asdfasd这类情况输出周期为4)

每天水水题,不想做菜鸡学长...

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<map>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#define mod 998244353;
#define Max 0x3f3f3f3f;
#define Min 0xc0c0c0c0;
#define mst(a) memset(a,0,sizeof(a))
#define f(i,a,b) for(int i=a;i<b;i++)
using namespace std;
typedef long long ll;
const int maxn=100005;
char str[maxn];
int main(){
    ios::sync_with_stdio(false);
    while(cin>>str){
        int flag=1;
        int len=strlen(str);
        int i;
        for(i=1;i<=len/2;i++){
            flag=1;
            for(int j=0;j<len;j++){
                if(str[j]!=str[j%i]){
                    flag=0;
                    break;
                }
            }
            if(flag==1){
                break;
            }
        }
        if(flag==1){
                cout<<i<<endl;
            }
            else{
                cout<<len<<endl;
            }
        }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/qq1013459920/article/details/82749416