-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathminAddToMakeValid.py
50 lines (41 loc) · 1.14 KB
/
minAddToMakeValid.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'''
921. Minimum Add to Make Parentheses Valid
Given a string S of '(' and ')' parentheses, we add the minimum number of parentheses ( '(' or ')', and in any positions ) so that the
resulting parentheses string is valid. Formally, a parentheses string is valid if and only if:
It is the empty string, or
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.
Given a parentheses string, return the minimum number of parentheses we must add to make the resulting string valid.
Example 1:
Input: "())"
Output: 1
Example 2:
Input: "((("
Output: 3
Example 3:
Input: "()"
Output: 0
Example 4:
Input: "()))(("
Output: 4
Note:
S.length <= 1000
S only consists of '(' and ')' characters.
'''
def minAddToMakeValid(self, S: str) -> int:
stack = []
close = 0
for i,ch in enumerate(S):
if ch=='(':
stack.append(ch)
else:
if stack and stack[-1] == '(':
stack.pop()
else:
close+=1
#print(stack)
return len(stack)+close
'''
Time Complexity = O(n) where n is the length of the string
Space complexity = O(n)
'''