用C语言编程,输入一个由左右圆括号构成的字符串,判断这个字符串中的括号是否匹配,多组数据,如果字符串中的括号匹配,则输出YES,否则输出NO
时间: 2024-05-14 09:14:29 浏览: 55
分析:使用栈来解决这个问题,遇到左括号入栈,遇到右括号判断栈顶是否为左括号,如果是则出栈,否则说明不匹配。最后检查栈是否为空,为空说明匹配,否则不匹配。
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
char stack[MAX_LEN];
int top = -1;
void push(char c) {
stack[++top] = c;
}
char pop() {
return stack[top--];
}
int isEmpty() {
return top == -1;
}
int isMatch(char c1, char c2) {
return (c1 == '(' && c2 == ')');
}
int check(char* str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
char c = str[i];
if (c == '(') {
push(c);
} else if (c == ')') {
if (!isEmpty() && isMatch(stack[top], c)) {
pop();
} else {
return 0;
}
}
}
return isEmpty();
}
int main() {
char str[MAX_LEN];
while (scanf("%s", str) != EOF) {
if (check(str)) {
printf("YES\n");
} else {
printf("NO\n");
}
top = -1;
}
return 0;
}
```
阅读全文