网络异常,图片无法展示
|
题目地址(921. 使括号有效的最少添加)
题目描述
给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效。 从形式上讲,只有满足下面几点之一,括号字符串才是有效的: 它是一个空字符串,或者 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者 它可以被写作 (A),其中 A 是有效字符串。 给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。 示例 1: 输入:"())" 输出:1 示例 2: 输入:"(((" 输出:3 示例 3: 输入:"()" 输出:0 示例 4: 输入:"()))((" 输出:4 提示: S.length <= 1000 S 只包含 '(' 和 ')' 字符。
思路
用栈的方式实现
代码
- 语言支持:Python3
Python3 Code:
class Solution: def minAddToMakeValid(self, s: str) -> int: sList = list(s) resList = [] for i in sList: if i == ")" and len(resList)>0 and resList[-1]=="(": resList.pop() else: resList.append(i) return len(resList)
复杂度分析
令 n 为数组长度。
- 时间复杂度:O(n)O(n)
- 空间复杂度:O(n)O(n)