版权声明:菜鸟一枚~~ 有想法可在下面评论, 转载标明出处即可。 https://blog.csdn.net/KLFTESPACE/article/details/84817863
//刚开始觉得这道题挺简单的....结果一直总是处理不完结果是No 的数据..(没输出) 。。。。后来发现stack的empty也得加上,不能直接判断栈顶元素与此时数组元素相等,将错误的附在第二个代码上
//AC
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
string str1;
getline(cin,str1);
while(n--)
{
string str;
stack<char> s;
int i,flag=1;
getline(cin,str);
for(i=0;i<str.size();i++)
{
if(str[i]=='(')
{
s.push(str[i]);
}
else if(str[i]=='[')
{
s.push(str[i]);
}
else if(str[i]==')')
{
if(!s.empty() && s.top()=='(')
{
s.pop();
}
else
{
flag=0;
break;
}
}
else if(str[i]==']')
{
if(s.empty() || s.top()!='[')
{
flag=0;
break;
}
else
{
s.pop();
}
}
}
if(!s.empty()) flag=0;
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
//RE
#include <iostream>
#include <stack>
using namespace std;
stack<char> a;
stack<char> b;
int main()
{
int n;
cin >> n;
for(int i=0; i<n; i++){
char t;
int j=0, flag = 0;
//while(cin >> t && t != '\n')
string s;
cin >> s;
while(s[j])
{
t = s[j];
if(t == '(' || t == '['){
a.push(t);
}
else if(t == ')') {
if (a.top() == '(') {
a.pop();
}
else{
flag = 1;
break;
}
}
else if(t == ']'){
if (a.top() == '['){
a.pop();
}
else{
flag = 1;
break;
}
}
j++;
// cout << j << endl;
}
// cout << a.empty() << " " << b.empty() << endl;
if(flag == 0 && a.empty()){
cout << "Yes" << endl;
}
else
cout << "No" << endl;
//清空stack
while(!a.empty())
a.pop();
// while(!b.empty())
// b.pop();
}
return 0;
}