মনে করুন আমাদের একটি বাইনারি স্ট্রিং bin আছে। তারপর এতে n ইটারেশন প্রয়োগ করুন, এবং প্রতিটি ইটারেশনে 0 হয়ে যায় 01 এবং 1 হয়ে যায় 10, এরপর n-তম ইটারেশনের পর স্ট্রিং-এ i-তম ইনডেক্সের ক্যারেক্টার। তাই যদি বাইনারি স্ট্রিং হয় 101, এবং n = 2, এবং i = 3, তবে প্রথম ইটারেশনে এটি হবে 100110, পরবর্তী ইটারেশনে, এটি হবে 100101101001, তাই i-তম ইনডেক্সে 1 আছে।
এটি সমাধানের জন্য, নিচের ধাপগুলো অনুসরণ করতে হবে -
- n বার লুপ চালান, এবং প্রতিটি ইটারেশনে স্ট্রিং-এ আরেকটি লুপ চালান
- বাইনারি স্ট্রিং-এর প্রতিটি ক্যারেক্টার কনভার্ট করুন, এবং যদি সেটি 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