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

โปรแกรม C++ นับจำนวนตัวอักษรที่ต้องลบเพื่อได้สตริงดี

สมมติว่าเรามีสตริง S S มีตัวอักษร 2 ชนิดคือ 'x' และ 'a' เราต้องนับว่าสตริงที่ยาวที่สุดที่เหลือหลังจากลบตัวอักษรบางส่วนใน S จะยาวเท่าไร จนกว่าจะกลายเป็น "สตริงดี" สตริงดีคือ สตริงที่มีตัวอักษร 'a' มากกว่าครึ่งหนึ่งของความยาวอย่างเคร่งครัด

เช่น ถ้าค่าที่ป้อนเข้าเป็น S = "xaxxxxa" ผลลัพธ์จะได้ 3 เพราะถ้าลบ 'x' 4 ตัว สตริงจะกลายเป็น "xaa" ซึ่งเป็นสตริงดีที่มีความยาว 3

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

x := 2 * นับจำนวน 'a' ใน S n := ขนาดของ S คืนค่า min(n, x)

ตัวอย่างโค้ด

ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:

#include <bits/stdc++.h> using namespace std; int solve(string S) {    int x = 2 * count(S.begin(), S.end(), 'a') - 1;    int n = S.size();    return min(n, x); } int main() {    string S = "xaxxxxa";    cout << solve(S) << endl; }

ข้อมูลนำเข้า

"xaxxxxa"

ข้อมูลส่งออก

3