इस समस्या में, हमें दो स्ट्रिंग 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