केवल '(' और ')' वाली स्ट्रिंग दी गई है। इसे संतुलित करने के लिए न्यूनतम ब्रैकेट जोड़ें।
एल्गोरिदम: काउंटर o खुले ब्रैकेट के लिए। प्रत्येक '(' के लिए o++, प्रत्येक ')' के लिए यदि o>0 तो o-- अन्यथा cnt++ (बंद ब्रैकेट की जरूरत)। अंत में cnt + o वापस करें।
उदाहरण: "(()))(" → 2 ब्रैकेट चाहिए (बना सकते हैं "((()))()")।
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int solve(string s) {
int o = 0, 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("(()))(");
return 0;
}
इनपुट
Input: "(()))("
आउटपुट
2