输入一个算术表达式,其中包含两种括号:圆括号“()”和方括号“[]”,嵌套顺序任意,编写一个算法用于判别表达式中括弧是否能够正确匹配。
时间: 2023-12-26 13:07:15 浏览: 91
可以使用栈来解决这个问题,具体步骤如下:
1. 初始化一个空栈
2. 从左到右遍历表达式中的每个字符,如果是左括号(圆括号或方括号),则将其压入栈中;
3. 如果是右括号,则取出栈顶元素,如果栈顶元素和当前右括号不匹配,则表达式中括弧不匹配,返回 false;如果匹配,则继续处理下一个字符;
4. 遍历完整个表达式后,如果栈为空,则表达式中括弧匹配,返回 true;否则,表达式中括弧不匹配,返回 false。
下面是一个实现这个算法的 Python 代码示例:
```python
def is_matched(expression):
stack = []
for char in expression:
if char in ['(', '[']:
stack.append(char)
elif char in [')', ']']:
if not stack:
return False
top = stack.pop()
if (top == '(' and char != ')') or (top == '[' and char != ']'):
return False
return not stack
expression = input("请输入算术表达式:")
if is_matched(expression):
print("表达式中括弧匹配")
else:
print("表达式中括弧不匹配")
```
注意,这个算法只能判断表达式中括弧是否匹配,不能判断表达式本身是否合法。如果表达式本身不合法,可能会导致判断结果错误。
阅读全文