判断一个算数表达式中开括号和闭括号是否配对?代码
时间: 2024-05-03 11:22:12 浏览: 71
可以使用栈来实现括号匹配的判断,具体步骤如下:
1. 创建一个空栈。
2. 从左到右遍历算数表达式的每一个字符。
3. 如果当前字符是左括号(即 '('、'[' 或 '{'),将其入栈。
4. 如果当前字符是右括号(即 ')'、']' 或 '}'),则判断栈是否为空:
- 如果栈为空,则说明没有与该右括号匹配的左括号,表达式不合法,返回 False。
- 如果栈不为空,则将栈顶元素弹出,判断是否与当前右括号匹配:
- 如果匹配,则继续遍历表达式。
- 如果不匹配,则表达式不合法,返回 False。
5. 遍历结束后,如果栈为空,则说明所有的左括号都有与之匹配的右括号,表达式合法,返回 True;否则表达式不合法,返回 False。
以下是 Python 代码实现:
```python
def is_valid_expression(s):
stack = []
for c in s:
if c in '([{':
stack.append(c)
elif c in ')]}':
if not stack:
return False
left = stack.pop()
if (left == '(' and c != ')') or \
(left == '[' and c != ']') or \
(left == '{' and c != '}'):
return False
return not stack # 栈为空则表达式合法,否则不合法
```
使用示例:
```python
print(is_valid_expression('(1 + 2) * 3')) # True
print(is_valid_expression('[(1 + 2) * 3]')) # True
print(is_valid_expression('(1 + 2) * 3]')) # False
print(is_valid_expression('(1 + 2 * 3')) # False
```
阅读全文