Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนการดำเนินการเพื่อสร้างสตริงไบนารี "ab" ฟรีใน C++


เราได้รับสตริงที่สามารถมี "ab" และงานคือการคำนวณจำนวนการดำเนินการที่จำเป็นในการลบหรือลบ "ab" ออกจากสตริง ดังนั้น งานของเราคือตรวจสอบก่อนว่าสตริงมี "ab" หรือไม่ ถ้าใช่ จากนั้นเราต้องทำให้สตริง "ab" ฟรี

ป้อนข้อมูล − string str ="อบาบา"

ผลผลิต − จำนวนการดำเนินการเพื่อสร้างสตริงไบนารี “ab” ฟรีคือ − 4

คำอธิบาย ดังที่เราเห็นในรูปแบบสตริง "ab" เกิดขึ้นสองครั้ง ดังนั้นเราจะแทนที่ "ab" ด้วย "bba" ดังนั้นจำนวนการดำเนินการคือ 1 และตอนนี้สตริงคือ bbaabaa อีกครั้ง เราจะแทนที่ "ab" ด้วย "bba" ดังนั้นจำนวนการดำเนินการคือ 2 และตอนนี้สตริงคือ bbbbaaa เรากำลังมี "ab" อีกหนึ่งตัว ดังนั้นจำนวนการดำเนินการคือ 3 และตอนนี้สตริงคือ bbbbaaa ขณะที่เราแทนที่ "ab" ที่ตรวจสอบด้วย "bba" ต่อไป สตริงจะกลายเป็น "ab" ฟรี

ป้อนข้อมูล − str ="ป๊า"

ผลผลิต − จำนวนการดำเนินการเพื่อสร้างสตริงไบนารี “ab” ฟรีคือ − 1

คำอธิบาย อย่างที่เราเห็นในรูปแบบสตริง “ab” เกิดขึ้นครั้งเดียว ดังนั้นเราจะแทนที่ “ab” ด้วย “bba” ดังนั้นจำนวนการดำเนินการคือ 1 และตอนนี้สตริงคือ bbaaa ตอนนี้สตริงว่าง "ab" และนับเป็น 1

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อนสตริงและคำนวณความยาวของสตริงและส่งข้อมูลไปยังฟังก์ชันเพื่อการประมวลผลต่อไป

  • ประกาศจำนวนตัวแปรชั่วคราวเพื่อจัดเก็บการดำเนินการที่จำเป็นในการทำให้สตริง “ab” ว่าง

  • สร้างอาร์เรย์อักขระที่มีความยาวสตริงขนาด + 1

  • เก็บอักขระของสตริงในอาร์เรย์โดยใช้เมธอด strcpy()

  • เริ่มวนรอบ FOR จาก 0 จนถึงความยาวของสตริง

  • ภายในลูป ให้ตรวจสอบ IF arr[length - i - 1] ='a' จากนั้นตั้งค่า count เป็น count + 0 และตั้งค่าตัวแปรทั้งหมดเป็นผลรวม * 2

  • มิฉะนั้น ให้เพิ่มจำนวนรวมเป็น 1

  • คืนจำนวน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

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

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

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