C++ 中括号的最小添加
c++server side programmingprogramming
假设我们有一个字符串 s,其中只包含"("和")",我们需要找到可以插入的最小括号数量,以使字符串平衡。
因此,如果输入类似于"(()))(",则输出将为 2,因为"(()))(",这可以像"((()))()"一样进行平衡。
为了解决这个问题,我们将遵循以下步骤 −
:= 0, cnt := 0
初始化 i := 0,当 i < s 的大小时,更新(将 i 增加 1),执行 −
如果 s[i] 与 '(' 相同,则 −
(将 o 增加 1)
否则
如果 o 非零,则 −
(将 o 减少 1)
否则
(将 cnt 增加 1)
return 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