使用 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 阅读量

职业生涯起航

完成课程即可获得认证

开始
广告
© . All rights reserved.