题目描述:
给定一个由 '('
和 ')'
括号组成的字符串 S
,我们需要添加最少的括号( '('
或是 ')'
,可以在任何位置),以使得到的括号字符串有效。
从形式上讲,只有满足下面几点之一,括号字符串才是有效的:
- 它是一个空字符串,或者
- 它可以被写成
AB
(A
与B
连接), 其中A
和B
都是有效字符串,或者 - 它可以被写作
(A)
,其中A
是有效字符串。
给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。
示例1:
输入:“())”
输出:1
示例2:
输入:“(((”
输出:3
示例3:
输入:“()”
输出:0
示例4:
输入:“()))((”
输出:4
提示:
S.length <= 1000
S
只包含'('
和')'
字符。
class Solution(object):
def minAddToMakeValid(self, S):
"""
:type S: str
:rtype: int
"""
#思路:遍历S中的每一个位置,并使用count来记录当前没有配对的左括号的个数,若在没有左括号的情况下遇到右括号,则res增1;若遍历到最后还剩下左括号没有可以配对的右括号,则对res进行相应的增加
count = 0
res = 0
for i in range(len(S)):
if '(' == S[i]:
count = count + 1
else:
if count > 0:
count = count - 1
else:
res = res + 1
res = res + count
return res
菜鸟一枚,代码仅供参考,如有问题,望指正~