编写python程序,判断一个只带小括号的表达式中中括号是否匹配
时间: 2024-10-21 21:06:11 浏览: 32
在Python中,我们可以使用栈数据结构来解决这个问题。栈是一种后进先出(LIFO)的数据结构,非常适合检查配对的括号。下面是一个简单的递归函数,用于判断给定字符串中大括号和中括号是否匹配:
```python
def is_brackets_matched(expression):
stack = []
opening_brackets = ['(', '[']
closing_brackets = [')', ']']
for char in expression:
if char in opening_brackets:
stack.append(char)
elif char in closing_brackets:
if not stack or stack.pop() != opening_brackets[closing_brackets.index(char)]:
return False
return len(stack) == 0 # 如果栈为空,说明所有括号都已配对,返回True;否则返回False
# 测试函数
expression_test_cases = [
"({[()]})", # 匹配
"({[[]]])", # 匹配
"[{)]", # 不匹配
"({[})", # 不匹配
]
for expr in expression_test_cases:
print(f"{expr}: {is_brackets_matched(expr)}")
```
这个函数会遍历输入的表达式,如果遇到开括号就压入栈,遇到闭括号则尝试弹出栈顶元素并检查是否匹配。如果不匹配或栈为空,则提前返回`False`。最后,如果整个表达式处理完毕而栈为空,表示所有的括号都匹配,返回`True`。
阅读全文