Description
A parentheses string is valid if and only if:
- It is the empty string,
- It can be written as
AB(Aconcatenated withB), whereAandBare valid strings, or - It can be written as
(A), whereAis 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.
Β
Example 1:
Input: s = "())" Output: 1
Example 2:
Input: s = "((("
Output: 3
Β
Constraints:
1 <= s.length <= 1000s[i]is either'('or')'.
Solution
Python3
class Solution:
def minAddToMakeValid(self, s: str) -> int:
needLeft, needRight = 0, 0
for i in range(len(s)):
if s[i] == '(':
needRight += 1
elif s[i] == ')':
if needRight:
needRight -= 1
else:
needLeft += 1
return needLeft + needRight