C++ Bracket
#include <string>
#include <vector>

int bracket(const std::string& s)
{
    std::vector<char> stack;

    for (char c : s) {
        switch (c) {
            case ')':
                if (stack.empty() || stack.back() != '(') {
                    return 0;
                }
                stack.pop_back();
                break;
            case ']':
                if (stack.empty() || stack.back() != '[') {
                    return 0;
                }
                stack.pop_back();
                break;
            case '}':
                if (stack.empty() || stack.back() != '{') {
                    return 0;
                }
                stack.pop_back();
                break;
            default:
                stack.push_back(c);
                break;
        }
    }

    return stack.empty() ? 1 : 0;
}

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