TypeScript Bracket
function bracket(s: string): number {
  const stack: string[] = [];

  for (const v of s) {
    switch (v) {
      case ")":
        if (stack.length === 0 || stack.pop() !== "(") {
          return 0;
        }
        break;
      case "]":
        if (stack.length === 0 || stack.pop() !== "[") {
          return 0;
        }
        break;
      case "}":
        if (stack.length === 0 || stack.pop() !== "{") {
          return 0;
        }
        break;
      default:
        if (v) {
          stack.push(v);
        }
        break;
    }
  }

  return stack.length === 0 ? 1 : 0;
}

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