利用数据结构栈判断一个表达式中括号是否成对的代码
时间: 2024-10-13 21:13:14 浏览: 0
你可以使用Python编写这样的代码,利用栈的数据结构来判断括号是否成对:
```python
def is_valid_brackets(expression):
stack = []
brackets_map = {')': '(', ']': '[', '}': '{'}
for char in expression:
if char in brackets_map:
# 如果当前是右括号,检查上一个是否是对应的左括号
top = stack.pop() if stack else '#'
if top != brackets_map[char]:
return False
else:
# 如果当前是左括号,直接压入栈
stack.append(char)
# 检查最后是否有剩余的左括号
return not stack
# 测试
expression = "3*(a「12+51-b)"
print(is_valid_brackets(expression)) # 输出: False
```
在这个代码里,我们遍历表达式的每一个字符,如果是右括号,就从栈顶取出并检查是否匹配。如果不匹配或栈已空,则返回False。如果遍历完整个表达式后栈还剩内容,说明有未配对的左括号,也返回False。否则,返回True。