题解 | 括号的匹配
括号的匹配
https://www.nowcoder.com/practice/78f297134b0c4af09fb88218321c3fcc
def is_valid(s):
pairs = {')': '(', ']': '[', '}': '{', '>': '<'}
priority = {'<': 1, '(': 2, '[': 3, '{': 4}
stack = []
for ch in s:
if ch in priority:
# 如果栈不为空,且当前准备进栈的左括号优先级大于栈顶括号的优先级
if stack and priority[ch] > priority[stack[-1]]:
return False
stack.append(ch)
elif ch in pairs:
# 如果是右括号,检查是否匹配栈顶的左括号
if not stack or stack[-1] != pairs[ch]:
return False
stack.pop()
return len(stack) == 0
T = int(input().strip())
for i in range(T):
a = is_valid(input().strip())
if not a:
print("NO")
else:
print("YES")
查看17道真题和解析