表达式括号匹配。 假设表达式中允许包含圆括号、方括号和大括号3种括号,编写一个算法判断表达式中的括号是否正确配对。这段代码的主函数
时间: 2023-05-11 10:03:21 浏览: 220
可以使用栈来实现括号匹配的判断。遍历表达式中的每个字符,如果是左括号,则将其入栈;如果是右括号,则判断栈顶元素是否与之匹配,如果匹配则将栈顶元素出栈,否则表达式不合法。最后判断栈是否为空,如果为空则表达式合法,否则不合法。
以下是示例代码:
```python
def is_valid_expression(expr):
stack = []
for c in expr:
if c in '([{':
stack.append(c)
elif c in ')]}':
if not stack:
return False
if c == ')' and stack[-1] == '(' or \
c == ']' and stack[-1] == '[' or \
c == '}' and stack[-1] == '{':
stack.pop()
else:
return False
return not stack
expr = input("请输入表达式:")
if is_valid_expression(expr):
print("表达式合法")
else:
print("表达式不合法")
```
输入示例:
```
请输入表达式:(a+b)*[c-(d+e)]/{f+g}
表达式合法
```
注意:这段代码只是一个简单的示例,实际应用中还需要考虑更多的情况,比如转义字符、注释等。
阅读全文