國王有一個魔鏡,能夠把任何接觸鏡面的東西變成原來的兩倍——只是,由於是鏡子嘛,增長的那部分是反的。好比一條項鍊,咱們用AB來表示,不一樣的字母表示不一樣顏色的珍珠。若是把B端接觸鏡面的話,魔鏡會把這條項鍊變爲ABBA。若是再用一端接觸的話,則會變成ABBAABBA(假定國王只用項鍊的某一端接觸魔鏡)。給定最終的項鍊,請編寫程序輸出國王沒使用魔鏡以前,最初的項鍊可能的最小長度。ios
輸入:只有一個字符串,由大寫英文字母組成(字母數<=100000),表示最終的項鍊。函數
輸出:只有一個整數,表示國王沒使用魔鏡前,最初的項鍊可能的最小長度。spa
本題能夠使用C++string類模板來解決,很是方便呢QwQ。code
1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 using namespace std; 5 int main() 6 { 7 string str; 8 cin >> str; 9 while(str.size()%2==0&&str.size()!=0) 10 { 11 int mid = str.size()/2; 12 string str1(str,0,mid); 13 string str2(str,mid,str.size()); 14 reverse(str2.begin(),str2.end()); 15 if(str1 != str2) 16 break; 17 str = str1; 18 } 19 cout << str.size() << endl; 20 return 0; 21 } //自我感受代碼良好
注:string類能夠直接使用=和==來賦值和判斷blog
最後貼上題目連接ci