एक स्ट्रिंग का क्रमचय तब बनता है जब दिए गए स्ट्रिंग्स के चरित्र को किसी भी रूप में पुनर्व्यवस्थित किया जाता है। इस ट्यूटोरियल में, हम इस बात पर चर्चा करने जा रहे हैं कि हम C++ की स्टैंडर्ड टेम्प्लेट लाइब्रेरी का उपयोग करके किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तन कैसे प्रिंट कर सकते हैं, उदाहरण के लिए
Input : s = “ADT” Output : “ADT”, “ATD”, “DAT”, “DTA”, “TAD”, “TDA” Explanation : In the given output as you can see all the string are made up of same three character present in our string and are just rearranged thus they fit in the definition of a permutation of a string now there is one more thing to note these are all the permutations possible of string s.
ऐसी दो विधियाँ हैं जिनके द्वारा हम किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तनों को प्रिंट कर सकते हैं
घुमाएं()
पहली विधि जिसका हम उपयोग करने जा रहे हैं वह है रोटेट विधि का उपयोग करना। इस पद्धति में, हम STL के रोटेट फ़ंक्शन का उपयोग करेंगे, जिसका उपयोग हमारे स्ट्रिंग को घुमाने के लिए किया जाता है, और हम क्रमपरिवर्तन को प्रिंट करने के लिए रिकर्सन का उपयोग करने जा रहे हैं।
उदाहरण
उपरोक्त विधि के लिए C++ कोड
#include<bits/stdc++.h> using namespace std; void permutations(string s, string ans){ if(s.size() == 0) { // when our string which needs to //be rotated becomes empty then it means //that our permutation is stored in ans cout << ans << "\n"; return ; } for(int i = 0; i < s.size(); i++){ permutations(s.substr(1), ans + s[0]); // we are adding the // first character in our ans // passing all elements from index 1 in our // rotate string for next function. rotate(s.begin(), s.begin()+1, s.end()); //rotating such that our second element becomes first } } int main(){ string s = "ADT"; // given string permutations(s, ""); return 0; }
आउटपुट
ADT ATD DTA DAT TAD TDA
अगला_क्रमपरिवर्तन
अब हम STL के एक अन्य फ़ंक्शन का उपयोग करेंगे, जैसे कि next_Permutation जैसा कि नाम से पता चलता है, इस फ़ंक्शन का रिटर्न टर्न यह है कि इस स्ट्रिंग का अगला क्रमपरिवर्तन मौजूद है या नहीं। यदि नहीं, तो यह झूठी वापसी करता है।
जैसा कि आप जानते हैं, यह फ़ंक्शन अगले क्रमपरिवर्तन की जाँच करता है; इस प्रकार, हमें पहले स्ट्रिंग को शब्दावली के अनुसार क्रमबद्ध करने की आवश्यकता है ताकि हमें सभी संभावित क्रमपरिवर्तन मिलें।
उदाहरण
उपरोक्त विधि के लिए C++ कोड
#include<bits/stdc++.h> using namespace std; int main(){ string s = "ADT"; // given string sort(s.begin(), s.end()); // sorting the string do{ cout << s << "\n"; // printing the permutations }while(next_permutation(s.begin(), s.end())); // till next_permutations returns false return 0; }
आउटपुट
ADT ATD DAT DTA TAD TDA
उपरोक्त प्रोग्राम में, हम अपनी स्ट्रिंग को सॉर्ट करते हैं, और फिर next_permutation फ़ंक्शन की सहायता से, हम सभी संभावित क्रमपरिवर्तन प्रिंट करते हैं।
निष्कर्ष
इस ट्यूटोरियल में, हम दिए गए स्ट्रिंग के सभी संभावित क्रमपरिवर्तनों को C++ में STL की मदद से प्रिंट करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और कुछ आवश्यक STL फंक्शन और उनके उपयोग के बारे में भी सीखा। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगा होगा।