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