题解 | 括号配对问题
括号配对问题
https://www.nowcoder.com/practice/57260c08eaa44feababd05b328b897d7
#include <stdio.h>
#include <string.h>
int main() {
char s[10001];
scanf("%s", s);
char stack[10001];
int top = -1;
for(int i = 0; s[i] != '\0'; i++) {
// 左括号 → 入栈
if(s[i] == '(' || s[i] == '[' || s[i] == '{') {
stack[++top] = s[i];
}
// 右括号
// 判断是否匹配
if(s[i] == ')' || s[i] == '}' || s[i] == ']'){
if(top == -1){
printf("false");
return 0;
}
if((s[i] == ')' && stack[top] == '(') ||
(s[i] == ']' && stack[top] == '[') ||
(s[i] == '}' && stack[top] == '{')) {
top--; // 匹配成功 → 出栈
}
}
}
// 最后栈必须为空
if(top == -1) printf("true\n");
else printf("false\n");
return 0;
}
查看13道真题和解析