如何编写一个程序来检查给定的算术表达式中所有类型的括号(圆括号、方括号和花括号)是否正确并互相匹配?
时间: 2024-09-30 20:11:37 浏览: 38
编写一个检查算术表达式括号配对的程序通常涉及到栈数据结构的使用。你可以按照以下步骤来设计这个算法:
1. 创建一个空栈 `stack`,用于存放左括号。
2. 遍历输入的算术表达式字符串。对于每个字符:
- 如果遇到一个左括号(如 '(', '[', '{'),将其压入栈中。
- 如果遇到一个右括号(如 ')', ']', '}'),检查栈顶元素是否与其对应。例如,')' 对应于 '(',']' 对应于 '[','}' 对应于 '{'。
- 如果不匹配,返回错误信息,因为括号不匹配。
- 如果匹配,从栈顶弹出一个左括号。
- 如果遍历结束,而栈不为空,说明还有未关闭的左括号,返回错误信息。
3. 如果循环结束后栈为空,说明所有的括号都已正确匹配。
下面是一个简单的 Python 示例,使用了内置的 `stack` 库:
```python
def check_brackets(expression):
brackets = {'(': ')', '[': ']', '{': '}'}
stack = []
for char in expression:
if char in brackets.keys():
stack.append(char)
elif char in brackets.values():
if not stack or stack.pop() != brackets[char]:
return False
return not stack
expression = input("请输入算术表达式:")
if check_brackets(expression):
print("括号匹配正确。")
else:
print("括号不匹配。")
```