判断一个算数表达式中开括号和闭括号是否配对?
时间: 2024-05-11 20:14:11 浏览: 13
可以使用栈来判断一个算数表达式中开括号和闭括号是否配对。遍历表达式,当遇到开括号时将其压入栈中,当遇到闭括号时从栈中弹出一个开括号,若弹出的开括号和当前闭括号不匹配,则表达式中的括号不配对。最后如果栈中还有未弹出的开括号,则表达式中的括号也不配对。以下是示例代码:
```python
def is_parentheses_matched(expr):
stack = []
for c in expr:
if c == '(':
stack.append(c)
elif c == ')':
if not stack or stack.pop() != '(':
return False
return not stack
```
示例:
```python
>>> is_parentheses_matched('2 * (3 + 5) - 4 / (6 - 2)')
True
>>> is_parentheses_matched('(2 + 3) * 5 + (6 - 2')
False
```
相关问题
判断一个算数表达式中开括号和闭括号是否配对?代码
可以使用栈来实现括号匹配的判断,具体步骤如下:
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
```
判断算数表达式中开括号和闭括号是否配对
可以用栈来判断算数表达式中的括号是否配对。遍历表达式,当遇到左括号时,将其压入栈中;当遇到右括号时,从栈中弹出一个左括号,如果弹出的左括号与右括号不匹配,则表达式中的括号不配对。如果遍历完表达式后栈为空,则说明表达式中的括号全部配对。
下面是Python的示例代码:
```python
def check_parentheses(expression):
stack = []
for c in expression:
if c == '(':
stack.append(c)
elif c == ')':
if len(stack) == 0:
return False
else:
stack.pop()
return len(stack) == 0
```
示例:
```python
>>> check_parentheses('1 + (2 * 3) - 4')
True
>>> check_parentheses('1 + (2 * 3 - 4')
False
```