바이너리 문자열 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