首页 文章资讯内容详情

C ++中的最小括号添加

2026-06-05 1 花语

假设我们有一个仅包含(和)的字符串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