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

Đếm số phép toán để tạo chuỗi nhị phân “ab” trống trong C ++

Chúng tôi được cung cấp một chuỗi có thể chứa “ab” và nhiệm vụ là tính toán số lượng các hoạt động cần thiết để xóa hoặc xóa “ab” khỏi chuỗi. Vì vậy, nhiệm vụ của chúng ta trước hết là kiểm tra xem chuỗi có chứa “ab” hay không, nếu có thì chúng ta phải làm cho chuỗi “ab” trống.

Đầu vào - chuỗi str ="ababaa"

Đầu ra - Số lượng phép toán để tạo chuỗi nhị phân “ab” miễn phí là - 4

Giải thích - Như chúng ta thấy trong mẫu chuỗi “ab” xảy ra hai lần vì vậy chúng ta sẽ thay thế “ab” bằng “bba” để số phép toán là 1 và bây giờ chuỗi là bbaabaa. Một lần nữa, chúng ta sẽ thay thế “ab” bằng “bba” để số phép toán là 2 và bây giờ chuỗi là bbabbaaa. Chúng ta đang có thêm một “ab” nên số phép toán là 3 và bây giờ chuỗi là bbabbaaa. Khi chúng tôi tiếp tục thay thế "ab" đã kiểm tra bằng "bba", chuỗi sẽ trở thành "ab" trống.

Đầu vào - str ="abaa"

Đầu ra - Số lượng phép toán để tạo chuỗi nhị phân “ab” miễn phí là - 1

Giải thích - Như chúng ta thấy trong mẫu chuỗi “ab” đang xảy ra một lần nên chúng ta sẽ thay thế “ab” bằng “bba” để số phép toán là 1 và bây giờ chuỗi là bbaaa. Bây giờ, chuỗi là "ab" miễn phí và số lượng là 1.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập một chuỗi và tính toán độ dài của một chuỗi và chuyển dữ liệu vào hàm để xử lý thêm.

  • Khai báo một số lượng biến tạm thời để lưu trữ các hoạt động cần thiết để làm cho chuỗi “ab” trống.

  • Tạo một mảng ký tự có độ dài chuỗi kích thước + 1

  • Lưu trữ ký tự của chuỗi trong một mảng bằng phương thức strcpy ().

  • Bắt đầu lặp FOR từ 0 cho đến hết độ dài của một chuỗi

  • Bên trong vòng lặp, kiểm tra IF arr [length - i - 1] =‘a’, sau đó đặt số đếm là số đếm + 0 và đặt biến tổng thành tổng số * 2

  • Ngược lại, tăng tổng số lên 1.

  • Trả lại số lượng

  • In kết quả.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
int operations_ab_free(string str, int len){
   int count = 0;
   char arr[length + 1];
   strcpy(arr, str.c_str());
   int total = 0;
   for (int i = 0; i < len; i++){
      if (arr[len - i - 1] == 'a'){
         count = (count + total);
         total = (total * 2);
      }
      else{
         total++;
      }
   }
   return count;
}
int main(){
   string str = "ababaa";
   int length = str.length();
   cout<<"Count of operations to make a binary string “ab” free are: "<<operations_ab_free(str,
length)<<endl;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of operations to make a binary string “ab” free are: 4