Balanced Brackets

  • + 0 comments

    I Love Ruby

    def isBalanced(s)
      brackets_map_opened = {"{"=>"}", "["=>"]", "("=>")"}
      brackets_map_closed = brackets_map_opened.invert
      brackets_stack = []
    
      s.chars do |char|
        bracket = (brackets_map_opened[char] || brackets_map_closed[char])
        next unless bracket
        
        open_bracket = brackets_map_closed[char]
        if open_bracket && open_bracket == brackets_stack.last
          brackets_stack.pop
        else
          brackets_stack << char
        end
      end
    
      brackets_stack.empty? ? "YES" :"NO"
    end