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

Xóa "01" hoặc "10" trong chuỗi nhị phân để làm cho nó không có "01" hoặc "10 trong C ++?

Đầu tiên chúng ta hãy khai báo chuỗi ban đầu và tính độ dài của nó rồi chuyển chúng vào hàm deleteSubstr (str, length).

string str = "01010110011";
int length = str.length();
cout <<"Count of substring deletion"<< deleteSubstr(str, length);

Bên trong của hàm deleteSubstr (string str, int length), vòng lặp for chạy cho đến khi tôi nhỏ hơn chiều dài và tăng biến count_0 và count_1 khi gặp 0 và 1 tương ứng. Sau đó, hàm trả về giá trị nhỏ nhất của count_0 và count_1.

int deleteSubstr(string str, int length){
   int count_0 = 0, count_1 = 0;
   for (int i = 0; i < length; i++) {
      if (str[i] == '0')
         count_0++;
      else
         count_1++;
   }
   return min(count_0, count_1);
}

Ví dụ

Hãy để chúng tôi xem cách triển khai sau đây về việc xóa “01” hoặc “10” trong chuỗi nhị phân để làm cho nó không còn “01” hoặc “10” -

#include <iostream>
using namespace std;
int deleteSubstr(string str, int length){
   int count_0 = 0, count_1 = 0;
   for (int i = 0; i < length; i++) {
      if (str[i] == '0')
         count_0++;
      else
         count_1++;
   }
   return min(count_0, count_1);
}
int main(){
   string str = "01010110011";
   int length = str.length();
   cout <<"Count of substring deletion "<< deleteSubstr(str, length);
   return 0;
}

Đầu ra

Đoạn mã trên sẽ tạo ra kết quả sau -

Count of substring deletion 5