20. Valid Parentheses

Given a string 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.

Note that an empty string is also considered valid.

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true

# @param {String} s
# @return {Boolean}
def is_valid(s)
  
  if s.empty?
    return true
  elsif s.chars.size % 2 != 0
    return false
  end
  
  new_arry = []

  s.chars.each do |v|
    if v == "(" || v == "{" || v == "["
      new_arry.push(v)
    else
      top = new_arry.pop
      if (top == "(" && v != ")") || (top == "[" && v != "]") || (top == "{" && v != "}")
        return false
      end
    end
  end
  
  return new_arry.empty?
  
end

Last updated

Was this helpful?