C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

  1. C ++を使用して、文字列内の最初に繰り返される文字を検索します。

    文字列があるとします。繰り返される最初の文字を見つける必要があります。文字列は「HelloFriends」なので、最初に繰り返される文字はlになります。次々と2つのlがあるので。 これを解決するために、ハッシュ手法を使用します。ハッシュテーブルを1つ作成し、各文字を1つずつスキャンします。文字が存在しない場合はハッシュテーブルに挿入し、すでに存在する場合はその文字を返します。 例 #include<iostream> #include<unordered_set> using namespace std; char getFirstRepeatingChar(stri

  2. バイナリ検索とシーケンシャル検索を比較するC++プログラム

    バイナリ検索とシーケンシャルまたはリニア検索はどちらも、コンピュータプログラミングで要素を検索するために使用されます。二分探索の時間計算量はO(log(n))であり、順次探索はO(n)です。 アルゴリズム Begin    Algorithm for Binary Search:    BinarySearch() function with ‘arr’ the array of data and ‘n’ the number of values, start and end index, iteratio