括号检验:输入一个代数表达式,表达式只能含有+,-,*,/,(,)以及0到9的非负整数,设表表达式除括号匹配外,再无其他错误。编写算法对输入的表达式进行检验,判断括号匹配是否正确
时间: 2023-08-24 09:05:09 浏览: 298
好的,这是一个算法问题。我们可以使用栈来解决这个问题。
具体的算法步骤如下:
1. 创建一个栈,用来存储左括号。
2. 遍历表达式中的每一个字符。
3. 如果是左括号,将其压入栈中。
4. 如果是右括号,判断栈顶元素是否为左括号。
5. 如果栈顶元素是左括号,则将其弹出栈。
6. 如果栈顶元素不是左括号,则表明括号不匹配,返回错误。
7. 如果表达式遍历完毕后,栈为空,则括号匹配正确。
8. 如果表达式遍历完毕后,栈不为空,则括号匹配不正确。
下面是具体的实现代码(使用Python语言):
```
def check_parenthesis(expression):
stack = []
for char in expression:
if char == '(':
stack.append(char)
elif char == ')':
if len(stack) == 0 or stack[-1] != '(':
return False
stack.pop()
return len(stack) == 0
```
我们可以使用以下示例进行测试:
```
print(check_parenthesis("1+2*3+(4/2)")) # True
print(check_parenthesis("1+(2*3))")) # False
```
输出结果如下:
```
True
False
```
阅读全文