इस समस्या में, हमें दो स्ट्रिंग str1 और str2 दिए गए हैं और हमें दोनों स्ट्रिंग से सभी इंटरलीविंग स्ट्रिंग्स को प्रिंट करना है।
इंटरलीविंग स्ट्रिंग दो दिए गए स्ट्रिंग्स का उपयोग करके बनाया गया है जैसे कि प्रत्येक स्ट्रिंग के वर्णों का क्रम।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
Input: str1 = “XY” str2= “NS” Output: XYNS, XNYS, XNSY, NXYS, NXSY, NSXY
इस समस्या को हल करने के लिए, हम सभी पात्रों को तार में लेंगे। str1 =m की लंबाई और str2 =n की लंबाई इसलिए हम इन स्ट्रिंग्स से सभी इंटरलीव्ड स्ट्रिंग्स बनाएंगे।
सभी इंटरलीविंग स्ट्रिंग्स को प्रिंट करने के लिए, हम स्ट्रिंग्स के कैरेक्टर्स को ठीक करेंगे और स्ट्रिंग के सभी कॉम्बिनेशन के लिए रिकर्सिवली कॉल करेंगे।
उदाहरण
हमारे तर्क का कार्यान्वयन -
#include <iostream> #include <string.h> using namespace std; void printStrings (char *str1, char *str2, char *iStr, int m, int n, int i) { if (m == 0 && n == 0) cout<<iStr<<endl ; if (m != 0) { iStr[i] = str1[0]; printStrings(str1 + 1, str2, iStr, m - 1, n, i + 1); } if (n != 0) { iStr[i] = str2[0]; printStrings(str1, str2 + 1, iStr, m, n - 1, i + 1); } } void generateInterleavingString(char *str1, char *str2, int m, int n) { char *iStr= new char[((m + n + 1)*sizeof(char))]; iStr[m + n] ='\0'; printStrings(str1, str2, iStr, m, n, 0); } int main() { char str1[] = "XY"; char str2[] = "NS"; cout<<"All interleaving string are :\n"; generateInterleavingString(str1, str2, strlen(str1), strlen(str2)); return 0; }
आउटपुट
All interleaving string is − XYNS XNYS XNSY NXYS NXSY NSXYहै