使用 C++ 查詢由重複反轉和追加操作建立的二進位制字串中的第 k 位


假設我們有一個二進位制字串 s,初始為“0”。現在在每次迭代中,反轉它,並追加它,因此在經過 n 次迭代後,我們將找到第 k 位。假設迭代的次數為 4,而 k = 7,因此它將為:

迭代值(初始為 0)
101
20110
301101001
40110100110010110

因此第 7 位為 1。

在每次迭代中,求補,並追加,因此在經過 n 次迭代後,求得第 k 位

示例

 線上演示

#include<iostream>
using namespace std;
string getComplement(string bin){
   string temp = "";
   for(int i= 0; i<bin.length(); i++){
      if(bin[i] == '0')
         temp += "1";
      else
         temp += "0";
   }
   return temp;
}
char getCharacter(string bin_str, int n, int k) {
   string res = bin_str;
   for(int i = 0; i<n; i++){
      res += getComplement(res);
   }
   return res[k];
}
int main() {
   int n = 4;
   string bin = "0";
   cout << 7 << "th character is: "<< getCharacter(bin, n, 7);
}

輸出

7th character is: 1

更新日期:18-Dec-2019

107 閱讀量

職業生涯起航

完成課程即可獲得認證

開始
廣告