เราได้รับสตริงที่สามารถมี "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