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

โปรแกรม C++ เช็ค string ว่าเสียหรือไม่


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

ดังนั้น หากอินพุตเป็นเหมือน S ="fega)))))" ผลลัพธ์จะเป็น True เพราะนี่แย่เพราะมี 4 ตัวอักษรและ 6 ')

ขั้นตอน

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

ans := 0
n := size of S
i := n - 1
while (i >= 0 and S[i] is same as ')'), do:
   (decrease i by 1)
z := n - 1 - i
ans := 2 * z - n
if ans > 0, then:
   return true
Otherwise
   return 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