在C ++中打印给定两个字符串的所有交织
在这个问题中,我们给了两个字符串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