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)
PROBLEM
括號深度抓錯誤
一題一題刷