हमें दो बाइनरी स्ट्रिंग्स के साथ दिया गया है, मान लें कि str_1 और str_2 जिसमें 1 और 0 का संयोजन है और कार्य सबसे पहले स्ट्रिंग str_1 से संभव विभिन्न क्रमपरिवर्तनों के "SET" सेट को बनाना है और फिर हम XOR संचालन करेंगे बाइनरी स्ट्रिंग str_2 के साथ सेट में तत्व और फिर जांचें कि एक्सओआर 0 लौटा रहा है या नहीं। यदि हाँ, तो मामले पर विचार करें अन्यथा इसे अनदेखा करें।
आइए उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - स्ट्रिंग str_1 ="1111", स्ट्रिंग str_2 ="1111"
आउटपुट - 0 के रूप में अन्य बाइनरी स्ट्रिंग के साथ XOR वाले चक्रीय क्रमपरिवर्तन की संख्या हैं:4
स्पष्टीकरण - हम स्ट्रिंग str_2 का उपयोग करके सेट बनाएंगे और सेट {1111} होगा। अब हम स्ट्रिंग str_1 और {1111} ^ "1111" =0 से बने सेट का उपयोग करके XOR संचालन करेंगे। चूंकि हमारे पास स्ट्रिंग str_2 में 4 समान तत्व हैं इसलिए हम 4 अलग-अलग क्रमपरिवर्तन बना सकते हैं इसलिए आउटपुट 4 है।
इनपुट - स्ट्रिंग str_1 ="1101", स्ट्रिंग str_2 ="1101"
आउटपुट - 0 के रूप में अन्य बाइनरी स्ट्रिंग के साथ XOR वाले चक्रीय क्रमपरिवर्तन की संख्या हैं:1
स्पष्टीकरण - हम स्ट्रिंग str_2 का उपयोग करके सेट बनाएंगे और सेट {1101, 1110, 1011, 0111} होगा। अब हम स्ट्रिंग str_1 और गठित सेट यानी
. का उपयोग करके XOR संचालन करेंगे{1101} ^ 1101 =0
{1110} ^ 1101 0 के बराबर नहीं है
{1011} ^ 1101 0 के बराबर नहीं है
{0111} ^ 1101 0 के बराबर नहीं है
जैसा कि हम केवल एक 0 हासिल कर सकते हैं इसलिए गिनती 1 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
- इनपुट दो बाइनरी स्ट्रिंग्स मान लें कि str_1 और str_2 और उन्हें आगे की प्रक्रिया के लिए साइकलिक_परम्यूटेशन() फ़ंक्शन में पास करें।
- परिणाम को संग्रहीत करने के लिए एक अस्थायी चर बनाएं और str_2 को str_2 + str_2 के रूप में सेट करें और फिर str_2 को str_2.substr(0, str_2.size()-1) के रूप में सेट करें।
- एक स्ट्रिंग प्रकार चर str बनाएँ और इसे str_1 और str_2 के संयोजन पर सेट करें और फिर स्ट्रिंग str की लंबाई की गणना करें। स्ट्रिंग की लंबाई की एक सरणी बनाएं str.
- एक तर्क के रूप में फ़ंक्शन के लिए स्ट्रिंग str और सरणी पास करके फ़ंक्शन check() को कॉल करें।
- समारोह के अंदर
- दो वेरिएबल को प्रारंभ और समाप्त घोषित करें और उन्हें 0 पर सेट करें
- स्ट्रिंग की लंबाई की गणना करें।
- स्ट्रिंग -1 के लिए मैं से लंबाई तक के लिए लूप शुरू करें और जांचें कि क्या मैं अंत से बड़ा हूं तो मैं के रूप में शुरू करें और मैं के रूप में समाप्त करें। अब प्रारंभ करें जबकि अंत स्ट्रिंग की लंबाई से कम है और str[end-start] str[end] के बराबर है और अंत के मान को 1 से बढ़ाएं
- अब arr[i] को अंत के रूप में सेट करें - अंत को 1 से शुरू करें और घटाएं
- अन्यथा, एक अस्थायी चर अस्थायी बनाएं और इसे i के रूप में सेट करें - प्रारंभ करें और IF arr [temp] अंत से कम - i + 1 की जांच करें और फिर arr [i] को arr [temp] के रूप में सेट करें। इसके अलावा, i से शुरू करें और एक स्ट्रिंग की लंबाई से कम अंत शुरू करें और str [end-start] के रूप में str [end] फिर अंत को 1 से बढ़ाएं और arr [i] को अंत के रूप में सेट करें - अंत को 1 से शुरू करें और घटाएं ।
- आरंभ लूप फॉर i से 1 तक स्ट्रिंग की लंबाई str -1 और जांचें कि IF arr[i] स्ट्रिंग की लंबाई str_1 के बराबर है, फिर गिनती को 1 से बढ़ाएँ
- वापसी की संख्या
- परिणाम प्रिंट करें
उदाहरण
#include <bits/stdc++.h> using namespace std; void check(string str, int arr[]) { int start = 0, end = 0; int len = str.length(); for (int i = 1; i <= len - 1; i++) { if (i > end) { start = i; end = i; while (end < len && str[end - start] == str[end]) { end++; } arr[i] = end - start; end--; } else { int temp = i - start; if (arr[temp] < end - i + 1) { arr[i] = arr[temp]; } else { start = i; while (end < len && str[end - start] == str[end]) { end++; } arr[i] = end - start; end--; } } } } int cyclic_permutation(string str_1, string str_2) { int count = 0; str_2 = str_2 + str_2; str_2 = str_2.substr(0, str_2.size() - 1); string str = str_1 + "$" + str_2; int len = str.length(); int arr[len]; check(str, arr); for (int i = 1; i <= len - 1; i++) { if (arr[i] == str_1.length()) { count++; } } return count; } int main() { string str_1 = "1111"; string str_2 = "1111"; cout << "Count of cyclic permutations having XOR with other binary string as 0 are: " << cyclic_permutation(str_1, str_2); return 0; }
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
आउटपुट
Count of cyclic permutations having XOR with other binary string as 0 are: 4