Computer >> Máy Tính >  >> Lập trình >> C ++

In tất cả các xen kẽ của hai chuỗi đã cho trong C ++


Trong bài toán này, chúng ta có hai chuỗi str1 và str2 và chúng ta phải in tất cả các chuỗi xen kẽ từ cả hai chuỗi.

Chuỗi xen kẽ được tạo bằng cách sử dụng hai chuỗi nhất định sao cho thứ tự các ký tự của mỗi chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề -

Input: str1 = “XY” str2= “NS”
Output: XYNS, XNYS, XNSY, NXYS, NXSY, NSXY

Để giải quyết vấn đề này, chúng tôi sẽ lấy tất cả các ký tự trong chuỗi. Chiều dài của str1 =m và chiều dài của str2 =n, vì vậy chúng tôi sẽ tạo tất cả các chuỗi xen kẽ từ các chuỗi này.

Để in tất cả các chuỗi đan xen, chúng tôi sẽ sửa các ký tự của chuỗi và gọi đệ quy cho tất cả các kết hợp của chuỗi.

Ví dụ

Thực hiện logic của chúng tôi -

#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;
}

Đầu ra

All interleaving string is −
XYNS
XNYS
XNSY
NXYS
NXSY
NSXY