题目
分析
简单的栈的运用,注意输入空行时的处理。
代码
#include <cstdio>
#include <cstring>
#include <stack>
using std::stack;
bool solve(char* s, int l)
{
stack<char> p;
for (int i = 0; i < l; i++) {
if (*(s+i) == '(' || *(s+i) == '[') {
p.push(*(s+i));
} else if (*(s+i) == ')') {
if (!p.empty() && p.top() == '(') p.pop();
else return false;
} else {
if (!p.empty() && p.top() == '[') p.pop();
else return false;
}
}
return p.empty();
}
int main()
{
int t;
char buf[130];
scanf("%d\n", &t);
while (t--) {
fgets(buf, 130, stdin);
printf(solve(buf, strlen(buf)-1) ? "Yes\n" : "No\n");
}
return 0;
}
本文介绍了一个使用栈数据结构实现的括号平衡检查算法。通过遍历输入字符串中的括号,并利用栈来匹配成对出现的括号,最终判断括号是否正确配对。文章提供了完整的C++代码实现。
446

被折叠的 条评论
为什么被折叠?



