Solution: Minimum Remove to Make Valid Parentheses

Let's solve the Minimum Remove to Make Valid Parentheses problem using the Stacks pattern.

Statement

Given a string, s, that may have matchedEach opening parenthesis, (, has a closing parenthesis, ), for it. and unmatchedThere is no corresponding closing parenthesis, ), for an opening parenthesis, (. parentheses, remove the minimum number of parentheses so that the resulting string represents a valid parenthesization. For example, the string “a(b)” represents a valid parenthesization while the string “a(b” doesn’t, since the opening parenthesis doesn’t have any corresponding closing parenthesis.

Constraints:

  • 11 \leq s.length 103\leq 10^3
  • s[i] is either an opening parenthesis (( , a closing parenthesiss )), or a lowercase English letter.