习题6_1 平衡的括号(Parentheses Balance, UVa 673)
Posted As_zyh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了习题6_1 平衡的括号(Parentheses Balance, UVa 673)相关的知识,希望对你有一定的参考价值。
题目描述:
输入一个包含"()“和”[]"的括号序列,判断是否合法。具体规则如下:
空串合法。
如果A和B都合法,则AB合法。
如果A合法,则(A)和[A]都合法。
AC代码:
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
char a[150];
void get_input() {
memset(a, '\\0', sizeof(a));
char c;
int idx = 0;
while((c=getchar()) != '\\n') {
a[idx++] = c;
}
}
int main() {
int n;
scanf("%d", &n);
getchar();
while(n--) {
get_input();
stack<char> s;
int len = strlen(a);
for(int i = 0; i < len; i++) {
if(a[i] == '(' || a[i] == '[') s.push(a[i]);
else if(!s.empty()) {
char c = s.top();
if(c == '(' && a[i] == ')') s.pop();
if(c == '[' && a[i] == ']') s.pop();
} else {
if(a[i] == ')' || a[i] == ']') s.push(a[i]);
}
}
if(s.empty()) printf("Yes\\n");
else printf("No\\n");
}
return 0;
}
以上是关于习题6_1 平衡的括号(Parentheses Balance, UVa 673)的主要内容,如果未能解决你的问题,请参考以下文章
习题 6-1 UVA-673Parentheses Balance
leetcode 856. 括号的分数(Score of Parentheses)