【51Nod】1347 旋转字符串

来源:互联网 发布:instagram软件下载 编辑:程序博客网 时间:2024/05/21 09:59

题意

S[0…n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。
现在问题是给定一个字符串,判断他是否可以由一个对串旋转任意次得到。

解题思路

一个对串旋转任意次得到还是一个对串。

参考代码

#include <bits/stdc++.h>using namespace std;char s[1000000+1];int main(){    while (cin>>s){        int n=strlen(s);        if (n%2==1){            cout<<"NO"<<endl;            continue;        }        int flag=0;        for (int i=0;i<n/2;i++){            if (s[i]!=s[i+n/2]){                flag=1;                break;            }        }        if (flag) cout<<"NO"<<endl;        else cout<<"YES"<<endl;    }    return 0;}
原创粉丝点击