C ++中的最小括号添加
假设我们有一个仅包含'('和')'的字符串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