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

การเพิ่มวงเล็บปีกกาขั้นต่ำใน C++


สมมติว่าเรามีสตริงที่มีเพียง '(' และ ')' เราต้องหาจำนวนวงเล็บขั้นต่ำที่สามารถแทรกได้เพื่อให้สตริงมีความสมดุล

ดังนั้น หากอินพุตเป็นแบบ "(()))(" ดังนั้นเอาต์พุตจะเป็น 2 เป็น "(()))(" ค่านี้จะสมดุลได้เหมือน"((()))()"

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

  • :=0, cnt :=0

  • สำหรับการเริ่มต้น i :=0 เมื่อ i

    • ถ้า s[i] เหมือนกับ '(' แล้ว −

      • (เพิ่มขึ้น o 1)

    • มิฉะนั้น

      • ถ้า o ไม่ใช่ศูนย์ ดังนั้น −

        • (ลดลง o 1)

      • มิฉะนั้น

        • (เพิ่มขึ้นอีก 1)

  • ส่งคืน cnt + o

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(string s) {
      int o = 0;
      int cnt = 0;
      for(int i = 0; i < s.size(); i++){
         if(s[i] == '('){
            o++;
         } else {
            if(o)
               o--;
            else
               cnt++;
         }
      }
      return cnt + o;
   }
};
int main(){
   Solution ob;
   cout << (ob.solve("(()))("));
}

อินพุต

Input:
"(()))("

ผลลัพธ์

2