python编写程序,判断一个带小括号的表达式中中括号是否匹配(若不匹配输出那边的括号少了)
时间: 2024-10-21 10:01:22 浏览: 42
python正则表达式中的括号匹配问题
5星 · 资源好评率100%
在Python中,你可以使用栈数据结构来解决这个问题。这种方法称为括号匹配算法,也叫括号解析。这里是一个简单的实现步骤:
1. 定义两个栈,一个用于存储左括号('[' or '('),另一个用于存储右括号(']' or ')')。
2. 遍历输入的字符串,对于每个字符:
- 如果它是左括号,将其压入左括号栈。
- 如果它是右括号,检查栈顶元素是否与其配对:
- 如果可以匹配(例如,']' 和 '[' 或 ')' 和 '('),则弹出栈顶元素并继续处理下一个字符。
- 否则,这意味着当前右括号缺少对应的左括号,因此返回错误信息,指出哪一边的括号少了。
3. 当遍历完成后,如果左括号栈非空,说明还有未匹配的左括号,同样返回错误信息。
下面是一个简单的Python函数示例:
```python
def check_brackets(expression):
left_brackets = []
brackets_map = {')': '(', ']': '[', '}': '{'}
for char in expression:
if char in ['[', '(', '{']:
left_brackets.append(char)
elif char in [']', ')', '}']:
if not left_brackets or left_brackets[-1] != brackets_map[char]:
return f"缺少与'{char}'匹配的左括号"
left_brackets.pop()
return "括号匹配成功" if not left_brackets else f"缺少与'{left_brackets[-1]}'匹配的右括号"
# 示例
expression = "[({})]"
print(check_brackets(expression)) # 括号匹配成功
expression = "[(])"
print(check_brackets(expression)) # 缺少与')'匹配的左括号
```
阅读全文