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示例
aa
ab
Output示例
YES
NO
題目連結:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1347
分析:此題啊!逾時啊。。。。一定要降低複雜度,之前寫的複雜度為O(n^2),降低複雜度後,為O(n/2);
下面給出AC代碼:
1 #include <bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 char s[1000005];
6 while(gets(s))
7 {
8 int count=1;
9 int len=strlen(s);
10 int t=len/2;
11 if(len%2!=0)
12 printf("NO\n");
13 else
14 {
15 for(int i=0;i<len/2;i++)
16 {
17 if(s[i]!=s[i+t])
18 {
19 count=0;
20 break;
21 }
22 }
23 if(count)
24 printf("YES\n");
25 else printf("NO\n");
26 }
27 }
28 return 0;
29 }
作 者:Angel_Kitty
出 處:https://www.cnblogs.com/ECJTUACM-873284962/
關于作者:阿裡雲ACE,目前主要研究方向是Web安全漏洞以及反序列化。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。
特此聲明:所有評論和私信都會在第一時間回複。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援部落客:如果您覺得文章對您有幫助,可以點選文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!
歡迎大家關注我的微信公衆号IT老實人(IThonest),如果您覺得文章對您有很大的幫助,您可以考慮賞部落客一杯咖啡以資鼓勵,您的肯定将是我最大的動力。thx.

我的公衆号是IT老實人(IThonest),一個有故事的公衆号,歡迎大家來這裡讨論,共同進步,不斷學習才能不斷進步。掃下面的二維碼或者收藏下面的二維碼關注吧(長按下面的二維碼圖檔、并選擇識别圖中的二維碼),個人QQ和微信的二維碼也已給出,掃描下面👇的二維碼一起來讨論吧!!!
歡迎大家關注我的Github,一些文章的備份和平常做的一些項目會存放在這裡。