判断一个算数表达式中开括号和闭括号是否配对?
时间: 2024-05-11 11:14:11 浏览: 160
可以使用栈来判断一个算数表达式中开括号和闭括号是否配对。遍历表达式,当遇到开括号时将其压入栈中,当遇到闭括号时从栈中弹出一个开括号,若弹出的开括号和当前闭括号不匹配,则表达式中的括号不配对。最后如果栈中还有未弹出的开括号,则表达式中的括号也不配对。以下是示例代码:
```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
```
相关问题
判断算数表达式中开括号和闭括号是否配对
可以用栈来判断算数表达式中的括号是否配对。遍历表达式,当遇到左括号时,将其压入栈中;当遇到右括号时,从栈中弹出一个左括号,如果弹出的左括号与右括号不匹配,则表达式中的括号不配对。如果遍历完表达式后栈为空,则说明表达式中的括号全部配对。
下面是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
```
用c语言来写判断算数表达式中开括号和闭括号是否配对
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
int main() {
char expression[MAX_SIZE];
int stack[MAX_SIZE], top = -1;
int i, len, flag = 1;
printf("Enter an arithmetic expression: ");
fgets(expression, MAX_SIZE, stdin);
len = strlen(expression);
expression[len - 1] = '\0'; // remove the newline character at the end
for (i = 0; i < len; i++) {
if (expression[i] == '(') {
stack[++top] = i;
} else if (expression[i] == ')') {
if (top == -1) {
flag = 0; // unpaired closing bracket
break;
} else {
top--;
}
}
}
if (top != -1) {
flag = 0; // unpaired opening bracket
}
if (flag) {
printf("The brackets in the expression are paired.\n");
} else {
printf("The brackets in the expression are not paired.\n");
}
return 0;
}
```
注:该代码使用了一个整型数组实现了栈结构,并且只支持单行输入。
阅读全文