.10.13数据结构括号是否匹配,这题才开始5组/7组最后10组测试成功。
ddd最近我感觉我对前标开窍了一点,课本真是个好东西。欢迎点赞、评论、收藏转发。
数据结构括号是否匹配
任务描述相关知识就说这一块在课本应该好好研究,对于其它源码就可以顿悟了!编程要求测试说明C++代码任务描述
本关任务:给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。
相关知识
为了完成本关任务,你需要掌握:1.栈的基本特性和操作,2.C++ 标准模板库(STL)中的容器栈(stack)的基本操作。
就说这一块在课本应该好好研究,对于其它源码就可以顿悟了!
wzm给我回去看题!
编程要求
根据提示,在右侧编辑器补充完成函数bool is_valid(char* str)的代码,该函数的功能为判断传入的字符串str中包含的括号是否匹配,如果匹配函数返回true,否则返回false。
测试说明
平台会对你编写的代码进行测试:
测试输入:
sin(10+20)
预期输出:
yes
测试输入:
{}{
预期输出:
no
测试输入:
[ , { ( , . ) [,] } , , ]
预期输出:
yes
开始你的任务吧,祝你成功!
C++代码
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <string>#include <stack>using namespace std;#include "sqstack.h" //包含顺序栈基本运算bool is_valid(char* str){//请在下面编写代码/*************************Begin*********************/int len = strlen(str);int pos = 0;int* ans = (int*)malloc(sizeof(int)*len);for (int i = 0; i < len; i++){if ((str[i] == '(') || (str[i] == '{') || (str[i] == '[')){ans[pos++] = str[i];}if (str[i] == ')'){if ('(' == ans[pos - 1]){pos--;}else{return false;}}if (str[i] == '}'){if ('{' == ans[pos - 1]){pos--;}else{return false;}}if (str[i] == ']'){if ('[' == ans[pos - 1]){pos--;}else{return false;}}}if (pos != 0){return false;}return true;/**************************End**********************/}int main(int argc, char const *argv[]){char exp[1000];fgets(exp, 1000, stdin);bool flag = is_valid(exp);if (flag)printf("yes\n");else printf("no\n");return 0;}