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

โปรแกรม C++ ตรวจสอบสตริงว่าน่ารังเกียจ (Bad) หรือไม่

สมมติว่าเรามีสตริง S ความยาว n ตัวอักษร S มีตัวอักษรภาษาอังกฤษพิมพ์เล็กและตัวอักษร ')' สตริงเป็น "น่ารังเกียจ" (bad) ถ้าจำนวนตัวอักษร ')' ที่ท้ายสตริง มากกว่าจำนวนตัวอักษรที่เหลืออย่างเคร่งครัด เราต้องตรวจสอบว่า S เป็น bad หรือไม่

เช่น ถ้าค่าที่ป้อนเข้าเป็น S = "fega))))))" ผลลัพธ์จะได้ True เพราะนี่เป็น bad เพราะมีตัวอักษร 4 ตัว และ ')' 6 ตัว

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

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

ans := 0 n := ขนาดของ S i := n - 1 ในขณะที่ (i >= 0 และ S[i] เท่ากับ ')') ทำ:    (ลด i ลง 1) z := n - 1 - i ans := 2 * z - n ถ้า ans > 0 แล้ว:    คืนค่า true มิฉะนั้น    คืนค่า false

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

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

#include <bits/stdc++.h> using namespace std; bool solve(string S) {    int ans = 0;    int n = S.size();    int i = n - 1;    while (i >= 0 && S[i] == ')')       i--;    int z = n - 1 - i;    ans = 2 * z - n;    if (ans > 0)       return true;    else       return false; } int main() {    string S = "fega))))))";    cout << solve(S) << endl; }

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

"fega))))))"

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

1