LeetCode in Kotlin

856. Score of Parentheses

Medium

Given a balanced parentheses string s, return the score of the string.

The score of a balanced parentheses string is based on the following rule:

Example 1:

Input: s = “()”

Output: 1

Example 2:

Input: s = “(())”

Output: 2

Example 3:

Input: s = “()()”

Output: 2

Constraints:

Solution

import java.util.Deque
import java.util.LinkedList

class Solution {
    fun scoreOfParentheses(s: String): Int {
        val stack: Deque<Int> = LinkedList()
        for (element in s) {
            if (element == '(') {
                stack.push(-1)
            } else {
                var curr = 0
                while (stack.peek() != -1) {
                    curr += stack.pop()
                }
                stack.pop()
                stack.push(if (curr == 0) 1 else curr * 2)
            }
        }
        var score = 0
        while (stack.isNotEmpty()) {
            score += stack.pop()
        }
        return score
    }
}