使用 C++ 查詢由重複反轉和追加操作建立的二進位制字串中的第 k 位
假設我們有一個二進位制字串 s,初始為“0”。現在在每次迭代中,反轉它,並追加它,因此在經過 n 次迭代後,我們將找到第 k 位。假設迭代的次數為 4,而 k = 7,因此它將為:
| 迭代 | 值(初始為 0) |
|---|---|
| 1 | 01 |
| 2 | 0110 |
| 3 | 01101001 |
| 4 | 0110100110010110 |
因此第 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP