LeetCode-in-Java

921. Minimum Add to Make Parentheses Valid

Medium

A parentheses string is valid if and only if:

You are given a parentheses string s. In one move, you can insert a parenthesis at any position of the string.

Return the minimum number of moves required to make s valid.

Example 1:

Input: s = “())”

Output: 1

Example 2:

Input: s = “(((“

Output: 3

Constraints:

Solution

import java.util.ArrayDeque;
import java.util.Deque;

@SuppressWarnings("java:S1149")
public class Solution {
    public int minAddToMakeValid(String s) {
        Deque<Character> stack = new ArrayDeque<>();
        for (char c : s.toCharArray()) {
            if (c == ')') {
                if (!stack.isEmpty() && stack.peek() == '(') {
                    stack.pop();
                } else {
                    stack.push(c);
                }
            } else {
                stack.push(c);
            }
        }
        return stack.size();
    }
}