列表

详情


921. 使括号有效的最少添加

只有满足下面几点之一,括号字符串才是有效的:

给定一个括号字符串 s ,移动N次,你就可以在字符串的任何位置插入一个括号。

返回 为使结果字符串 s 有效而必须添加的最少括号数

 

示例 1:

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

示例 2:

输入:s = "((("
输出:3

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minAddToMakeValid(string s) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2022-11-16 16:58:13

func minAddToMakeValid(s string) (ans int) {
    cnt := 0 // 保存剩余 '(' 个数
    for _, c := range s {
        if c == '(' {
            cnt++
        } else if cnt > 0 { // c == ')' && cnt > 0, 消除一对
            cnt--
        } else {  // c == ')', 需要增加一个 '('
            ans++
        }
    }
    return ans + cnt
}

python3 解法, 执行用时: 32 ms, 内存消耗: 14.9 MB, 提交时间: 2022-11-16 16:55:24

class Solution:
    def minAddToMakeValid(self, s: str) -> int:
        ans = cnt = 0
        for c in s:
            if c == '(':
                cnt += 1
            elif cnt > 0:
                cnt -= 1
            else:
                ans += 1
        return ans + cnt

上一题