मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग बिन है। फिर उस पर n पुनरावृत्तियों को लागू करें, और प्रत्येक पुनरावृत्ति में 0 01 हो जाता है और 1 10 हो जाता है, उसके बाद nth पुनरावृत्ति के बाद स्ट्रिंग में ith इंडेक्स कैरेक्टर होता है। इसलिए यदि बाइनरी स्ट्रिंग 101 है, और n =2, और i =3 है, तो पहले पुनरावृत्ति के बाद यह 100110 होगा, अगले पुनरावृत्ति में, यह 100101101001 होगा, इसलिए ith अनुक्रमणिका 1 धारण कर रही है।
इसे हल करने के लिए, हमें इन चरणों का पालन करना होगा -
- लूप को n बार चलाएँ, और प्रत्येक पुनरावृत्ति में स्ट्रिंग पर एक और लूप चलाएँ
- बाइनरी स्ट्रिंग के प्रत्येक वर्ण को कनवर्ट करें, और यदि वह 0 है, तो 01 को स्टोर करें या यदि वह 1 है, तो 10 को किसी अन्य अस्थायी स्ट्रिंग में संग्रहीत करें
- आंतरिक लूप के पूरा होने के बाद, अस्थायी स्ट्रिंग को बाइनरी स्ट्रिंग में संग्रहीत करें।
- फिर ith अनुक्रमणिका लौटाएं।
उदाहरण
#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