921. Minimum Add to Make Parentheses Valid

给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效。

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

  • 它是一个空字符串,或者
  • 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
  • 它可以被写作 (A),其中 A 是有效字符串。

给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。

# left表示需要的左括号数,right表示需要的右括号数。
# 遍历字符串s,
# 如果遇到左括号,说明此时需要再加右括号,right+1
# 如果遇到右括号,且right大于0,说明当前右括号可以匹配之前的左括号,不需要再加右括号,若此时right等于0,那么说明需要一个左括号

 1 class Solution(object):
 2     def minAddToMakeValid(self, S):
 3         """
 4         :type S: str
 5         :rtype: int
 6         """
 7 
 8         left,right=0,0
 9         for ch in S:
10             if(ch=='('):
11                 right+=1
12             elif(ch==')'):
13                 if(right>0):
14                     continue
15                 else:
16                     left+=1
17         
18         return left+right
原文地址:https://www.cnblogs.com/zijidan/p/12535739.html