假设我们有一个仅包含'('和')'的字符串s,我们必须找到可以插入以使该字符串平衡的最小括号。
因此,如果输入像“((()))(”),那么输出将为“((()))((2)”,这样可以使输出像“(((()))()”那样平衡。
为了解决这个问题,我们将遵循以下步骤-
:= 0,cnt:= 0
对于初始化i:= 0,当i <s的大小时,更新(将i增加1),执行-
如果o不为零,则-
除此以外
(将o减少1)
(将cnt增加1)
(将o增加1)
如果s [i]与'('相同,则-
除此以外
返回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