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