题目描述
题目描述
题解
题解
提交记录
提交记录
中等

给定一个仅包含字符 '(' 和 ')' 的括号字符串 s。如果一个括号字符串可以通过以下规则构成,则称其为 平衡 的:

  • 空字符串是平衡的。
  • 如果 A 是平衡的,那么 '(' + A + '))' 也是平衡的。
  • 如果 A 和 B 都是平衡的,那么它们拼接后的字符串也是平衡的。

换句话说,每个左括号 '(' 都必须与其后面一对连续的右括号 '))' 匹配,并且每个右括号都必须恰好属于这样一对匹配的右括号。

例如,"())"、"())(())))" 和 "(())())))" 是平衡的,而 ")()"、"()))" 和 "(()))" 不是平衡的。

你可以在字符串的任意位置插入字符 '(' 和 ')',使其变为平衡字符串。

返回使 s 变为平衡字符串所需的 最少 插入次数。

 

示例 1:

输入: s = "(()))"

输出: 1

解释:

第二个 '(' 与两个连续的 ')' 匹配,但第一个 '(' 只有一个与之匹配的 ')'。我们需要在字符串末尾再插入一个 ')',使字符串变为 "(())))",此时字符串是平衡的。

示例 2:

输入: s = "())"

输出: 0

解释:

字符串已经是平衡的,因为其中的 '(' 后面有两个连续的 ')',并且这两个右括号恰好构成与该左括号匹配的一对右括号。

示例 3:

输入: s = "))())("

输出: 3

解释:

在字符串开头插入一个 '(',与最前面的 '))' 匹配;在字符串末尾插入 '))',与最后一个 '(' 匹配。总共需要插入 3 个括号。

 

提示:

  • 1 <= s.length <= 105
  • s 仅由 '(' 和 ')' 组成。
 
代码
代码
测试用例
测试用例
测试结果
测试结果