您的位置:首页 > 文旅 > 美景 > 栈----7-9 括号匹配

栈----7-9 括号匹配

2024/10/6 16:25:37 来源:https://blog.csdn.net/Steve_hhh/article/details/139563574  浏览:    关键词:栈----7-9 括号匹配

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入格式:

输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:

如果括号配对,输出yes,否则输出no。

输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no

代码演示:22分

事实上,在test==1还不能完全说明匹配成功,因为可能是{【】{}这样的情况,最后剩下{,是不匹配的,然而test==1。所以最后的判断应该是top==-1;

#include<stdio.h>
#include<string.h>int check(char *s, int top, char op) {if (op == ')') {if (s[top] == '(')return 1;} else if (op == ']') {if (s[top] == '[')return 1;} else if (op == '}') {if (s[top] == '{')return 1;}return 0;
}int main() {char op[100];scanf("%s", op);int len = strlen(op);char s[100];int top = -1;int test;for (int i = 0; i < len; i++) {//入栈if (op[i] == '(') {s[++top] = '(';} else if (op[i] == '[') {s[++top] = '[';} else if (op[i] == '{') {s[++top] = '{';}//检查匹配,成功就弹出if (op[i] == ')' || op[i] == ']' || op[i] == '}') {test = check(s, top, op[i]);if (test == 1) {top--;} else {printf("no\n");return 0; // 输出结果后直接结束程序}}}if (top == -1) {printf("yes\n");} else {printf("no\n");}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com