मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग 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