Lisp Bracket
(defun bracket (s)
  (let ((stack '()))
    (loop for v across s
          do (cond
               ((char= v #\))
                (if (or (null stack) (char/= (pop stack) #\())
                    (return-from bracket 0)))
               ((char= v #\])
                (if (or (null stack) (char/= (pop stack) #\[))
                    (return-from bracket 0)))
               ((char= v #\})
                (if (or (null stack) (char/= (pop stack) #\{))
                    (return-from bracket 0)))
               (t (push v stack))))
    (if (null stack) 1 0)))

This uses a simple stack approach: open brackets go in, matching closing brackets pop them out.