1347 旋转字符串

来源:互联网 发布:vb登陆修改密码代码 编辑:程序博客网 时间:2024/06/09 03:10

1347旋转字符串
基准时间限制:1 秒 空间限制:131072 KB 分值:5难度:1级算法题
收藏
关注
取消关注

S[0...n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。

现在问题是给定一个字符串,判断他是否可以由一个对串旋转任意次得到。


Input
第1行:给出一个字符串(字符串非空串,只包含小写字母,长度不超过1000000)
Output
对于每个测试用例,输出结果占一行,如果能,输出YES,否则输出NO。
Input示例
aaab
Output示例
YESNO

思路:只要是旋转字符串,怎么旋转都是。直接判断输入串是不是就行了。

Code:

#include <bits/stdc++.h>using namespace std;const int AX = 1e6+666;char a[AX];int main(){while( ~scanf("%s",a+1) ){int len = strlen(a+1);int flag ;int l = len;int n = len/2;if( len % 2 == 0 ){for( int i = 1 ; i <= n ; i++ ){if( a[i] != a[i+n] ){flag = 0;break;}else{flag = 1;}}}else{flag = 0;}cout<<(flag == 1 ? "YES" : "NO")<<endl;}return 0;}

原创粉丝点击