Python 題目

PROBLEM

括號深度抓錯誤

一題一題刷

def check_brackets_full(expr):
    stack = []
    pairs = {')': '(', ']': '[', '}': '{'}
    max_depth = 0
    errors = []

    for i, ch in enumerate(expr):
        if ch in pairs.values():  # 開括號
            stack.append((ch, i))  # 儲存 (括號字元, 位置)
            max_depth = max(max_depth, len(stack))
        elif ch in pairs:  # 關括號
            if not stack or stack[-1][0] != pairs[ch]:
                errors.append((i, ch, "多餘或配對錯誤"))
            else:
                stack.pop()

    # 剩下的開括號沒對應右括號
    while stack:
        ch, pos = stack.pop()
        errors.append((pos, ch, "缺少右括號"))

    if errors:
        print(-1)
        for pos, ch, reason in sorted(errors):
            print(f"錯誤:在位置 {pos} 的 '{ch}' → {reason}")
    else:
        print(max_depth)