https://leetcode.com/problems/valid-parentheses/description/
fun valid_parentheses(s: String): Boolean {
if (s.length / 2 == 1) return false
when(s[0]) {
')', '}', ']' -> return false
}
val stack = Stack<Char>()
s.forEach { c ->
when (c) {
'(', '{', '[' -> stack.add(c)
')', '}', ']' -> {
if (stack.size == 0) return false
val p = when(c) {
')' -> '('
'}' -> '{'
']' -> '['
else -> throw Exception()
}
if (stack.pop() != p) return false
}
}
}
return stack.size == 0
}