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

Kiểm tra xem một chuỗi có thể trở nên trống hay không bằng cách xóa đệ quy một chuỗi con đã cho trong C ++

Giả sử, chúng ta được cung cấp hai chuỗi, str1 và str2. str2 là một chuỗi con của str1, và chúng ta có thể xóa str2 khỏi str1. Có thể, chuỗi str2 xuất hiện nhiều lần trong str1. Mục tiêu của chúng ta ở đây là tìm hiểu xem str1 có trở thành một chuỗi null hay không nếu chúng ta tiếp tục xóa str2 khỏi str1 nhiều lần. Nếu có thể, chúng tôi trả về 1, ngược lại là 0.

Vì vậy, nếu đầu vào là str1 ="CCCPPPPPP", str2 ="CPP"; thì đầu ra sẽ là true.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • trong khi kích thước của str1> 0, do -
    • index:=trả về vị trí bắt đầu chuỗi của str2 trong str1
    • nếu chỉ mục giống -1, thì -
      • Ra khỏi vòng lặp
    • xóa str2 khỏi str1
  • trả về 1 nếu kích thước của str1 tương tự với 0, ngược lại là 0.

Ví dụ (C ++)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include<bits/stdc++.h>
using namespace std;
bool solve(string str1, string str2) {
   while (str1.size() > 0) {
      int index = str1.find(str2);
      if (index == -1)
      break;
      str1.erase(index, str2.size());
   }
   return (str1.size() == 0);
}
int main() {
   string str1 = "CCCPPPPPP", str2 = "CPP";
   cout<<solve(str1, str2)<<endl;
   return 0;
}

Đầu vào

"CCCPPPPPP", "CPP"

Đầu ra

1