ในปัญหานี้ เราได้รับสตริง 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