Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 프로그래밍에서 n번 반복한 후 얻은 이진 문자열에서 i' 인덱스 문자 찾기

<시간/>

바이너리 문자열 bin이 있다고 가정합니다. 그런 다음 n번의 반복을 적용하고 각 반복에서 0은 01이 되고 1은 10이 되고 n번째 반복 후 문자열에서 i번째 인덱스 문자가 나옵니다. 따라서 이진 문자열이 101이고 n =2이고 i =3이면 첫 번째 반복 후에는 100110이 되고 다음 반복에서는 100101101001이 되므로 i번째 인덱스는 1을 유지합니다.

이 문제를 해결하려면 다음 단계를 따라야 합니다.

  • 루프를 n번 실행하고 각 반복에서 문자열에 대해 다른 루프를 실행합니다.
    • 2진 문자열의 각 문자를 변환하고 0이면 01을 저장하고 1이면 10을 다른 임시 문자열에 저장합니다.
    • 내부 루프 완료 후 임시 문자열을 바이너리 문자열에 저장합니다.
  • i번째 인덱스를 반환합니다.

예시

#include<iostream>
using namespace std;
char getCharacter(string bin_str, int n, int i) {
   string temp = "";
   for (int x = 0; x < n; x++) {
      for (int y = 0; y < bin_str.length(); y++) {
         if (bin_str[y] == '1')
            temp += "10";
         else
            temp += "01";
      }
      bin_str = temp;
      temp = "";
   }
   return bin_str[i];
}
int main() {
   int n = 2;
   string bin = "101";
   cout << 3 << "rd character is: "<< getCharacter(bin, n, 3)<<endl;
   cout << 9 << "th character is: "<< getCharacter(bin, n, 9);
}

출력

3rd character is: 1
9th character is: 0