← Coding round practice

Balanced Parentheses

HardStrings

The problem

Given a string of brackets ()[]{}, check whether they are balanced and correctly nested using a stack.

Sample input

{[()]}

Sample output

true
Show the solution · 8 languages
fun isBalanced(s: String): Boolean {
    val pairs = mapOf(')' to '(', ']' to '[', '}' to '{')
    val stack = ArrayDeque<Char>()
    for (ch in s) {
        if (ch in "([{") {
            stack.addLast(ch)
        } else if (ch in ")]}") {
            if (stack.isEmpty() || stack.removeLast() != pairs[ch]) return false
        }
    }
    return stack.isEmpty()
}

fun main() {
    println(isBalanced("{[()]}"))
}