括号检验:输入一个代数表达式,表达式只能含有+,-,,/,(,),1,2,3,4,5,6,7,8,9,0字符且每个数字均小于10,设表达式除括号匹配有误外,再无其他错误。编写算法对输入的表达式进行检验,判断括号匹配是否正确。 生成python代码
时间: 2024-12-15 07:22:13 浏览: 5
要编写一个Python函数来检查括号匹配,你可以使用栈数据结构。这里是一个简单的算法实现:
```python
def check_brackets(expression):
# 定义一个堆栈来存储左括号
brackets_stack = []
# 对于表达式的每一个字符
for char in expression:
if char == '(': # 如果遇到左括号,将其压入堆栈
brackets_stack.append(char)
elif char == ')': # 遇到右括号
# 如果堆栈为空或当前右括号对应的左括号不在堆栈顶部,说明匹配错误
if not brackets_stack or brackets_stack.pop() != '(':
return False
# 如果还有剩余的左括号未关闭,表示也存在匹配错误
if brackets_stack:
return False
# 如果循环结束且堆栈为空,说明括号匹配正确
return True
# 测试函数
expressions = ['((()))', '(()())', '(())', '())', '())(', '()(())']
for expr in expressions:
print(f'{expr}: {check_brackets(expr)}')
```
在这个代码中,我们遍历表达式中的每个字符,如果是左括号就入栈,如果是右括号则尝试从栈顶弹出一个左括号进行匹配。如果栈为空或者弹出的左括号与当前右括号不匹配,立即返回False。最后,如果没有剩余的左括号,说明括号匹配成功,返回True。如果函数返回False,则说明括号匹配错误。
阅读全文