Valid Parentheses

Given a string containing just the characters

'(', ')', '{', '}', '[' and ']'

determine if the input string is valid.

The brackets must close in the correct order,

"()" and "()[]{}"

are all valid but

"(]" and "([)]"

are not.

val brackets:Map[Char, Char] = Map[Char, Char] (
  ')' -> '(',
  '}' -> '{',
  ']' -> '['
)

def isValid(s: String): Boolean = {
  var lst: List[Char] = Nil
  for (c <- s) {
    if (brackets contains c) {
      for (open <- brackets.get(c)) {
        if (lst.head == open) lst = lst.tail
        else return false
      }
    } else {
      lst = c :: lst
    }
  }
  lst.isEmpty
}

isValid("()")
isValid("()[]{}")
isValid("(]")
isValid("([)]")

Last updated