957 Minimum Add To Make Parentheses Valid
957 Minimum Add To Make Parentheses Valid
Minimum Add to Make Parentheses Valid 
A parentheses string is valid if and only if:
1
2
3
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.
1
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*.
Example 1:
1
2
3
4
**Input:** s = "())"
**Output:** 1
Example 2:
1
2
3
4
**Input:** s = "((("
**Output:** 3
Constraints:
1
2
1 <= s.length <= 1000
s[i] is either '(' or ')'.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
def minAddToMakeValid(self, s: str) -> int:
arr = []
for k in s:
if k == ")" and len(arr) > 0 and arr[-1] == "(":
arr.pop()
else:
arr.append(k)
return len(arr)
#"()))(("
This post is licensed under CC BY 4.0 by the author.