用 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP