string類的簡單應用——國王的魔鏡

 

題目描述

國王有一個魔鏡,能夠把任何接觸鏡面的東西變成原來的兩倍——只是,由於是鏡子嘛,增長的那部分是反的。好比一條項鍊,咱們用AB來表示,不一樣的字母表示不一樣顏色的珍珠。若是把B端接觸鏡面的話,魔鏡會把這條項鍊變爲ABBA。若是再用一端接觸的話,則會變成ABBAABBA(假定國王只用項鍊的某一端接觸魔鏡)。給定最終的項鍊,請編寫程序輸出國王沒使用魔鏡以前,最初的項鍊可能的最小長度。ios

輸入輸出格式

 

輸入:只有一個字符串,由大寫英文字母組成(字母數<=100000),表示最終的項鍊。函數

輸出:只有一個整數,表示國王沒使用魔鏡前,最初的項鍊可能的最小長度。spa

 

 

 


 

本題能夠使用C++string類模板來解決,很是方便呢QwQ。code

 

所使用函數解釋:

  1. str.size() 返回str的長度
  2. string str1(str,0,10)str1初始化爲str從0至10的內容
  3. reverse()將字符串反轉

 


 

 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

P2799 國王的魔鏡 - 洛谷字符串

相關文章
相關標籤/搜索