LeetCode 921. Minimum Add to Make Parentheses Valid
考点 | 难度 |
---|---|
Greedy | Easy |
题目
A parentheses string is valid if and only if:
It is the empty string,
It can be written as AB (A concatenated with B), where A and B are valid strings, or
It can be written as (A), where A is a valid string.
You are given a parentheses string s. In one move, you can insert a parenthesis at any position of the string.
For example, if s = “()))”, you can insert an opening parenthesis to be “(()))” or a closing parenthesis to be “())))”.
Return the minimum number of moves required to make s valid.
思路
遇到左括号就加到stack,遇到右括号如果stack是空的c+1,如果stack不是空的就pop一个。
答案
class Solution:
def minAddToMakeValid(self, s):
stack=[]
c=0
for i in s:
if i=='(':
stack.append(i)
continue
if i==')':
if not stack:
c+=1
else:
if stack[-1]=='(':
stack.pop()
continue
c+=1
return c+len(stack)