天天看點

1347 旋轉字元串

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.

1347 旋轉字元串

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

1347 旋轉字元串

歡迎大家關注我的Github,一些文章的備份和平常做的一些項目會存放在這裡。