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