Post

957 Minimum Add To Make Parentheses Valid

957 Minimum Add To Make Parentheses Valid

Minimum Add to Make Parentheses Valid image

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.