LeetCode-in-All

20. Valid Parentheses

Easy

Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Example 1:

Input: s = “()”

Output: true

Example 2:

Input: s = “()[]{}”

Output: true

Example 3:

Input: s = “(]”

Output: false

Example 4:

Input: s = “([)]”

Output: false

Example 5:

Input: s = “{[]}”

Output: true

Constraints:

Solution

# @param {String} s
# @return {Boolean}
def is_valid(s)
  stack = []
  s.each_char do |c|
    case c
    when '(', '[', '{'
      stack.push(c)
    when ')'
      return false if stack.empty? || stack.pop != '('
    when '}'
      return false if stack.empty? || stack.pop != '{'
    when ']'
      return false if stack.empty? || stack.pop != '['
    else
      return false
    end
  end
  stack.empty?
end