LeetCode in Kotlin

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.Deque
import java.util.LinkedList

class Solution {
    fun minAddToMakeValid(s: String): Int {
        val stack: Deque<Char> = LinkedList()
        for (c in s.toCharArray()) {
            if (c == ')') {
                if (stack.isNotEmpty() && stack.peek() == '(') {
                    stack.pop()
                } else {
                    stack.push(c)
                }
            } else {
                stack.push(c)
            }
        }
        return stack.size
    }
}