AcWing 3693. 括号匹配
原题链接
简单
作者:
恶魔崇大人
,
2023-10-07 07:51:11
,
所有人可见
,
阅读 66
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
// const int MaxSize = 10000 + 1;
// typedef struct {
// int top;
// int data[MaxSize];
// }SqStack;
// void initStack(SqStack &S){
// S.top = -1;
// }
// bool Push(SqStack &S, int e){
// if(S.top == MaxSize - 1) return false; //满了
// S.data[++S.top] = e;
// return true;
// }
// bool Pop(SqStack &S, int &e){
// if(top == -1) return false; //空
// x = S.data[S.top--];
// return true;
// }
// bool StackEmpty(SqStack &S){
// return S.top == -1;
// }
// bool GetTop(SqStack S, int &e){
// if(S.top == -1) return false;
// e = S.data[S.top];
// return true;
// }
int main()
{
string s;
cin>>s;
bool flag = true;
stack <char> stk;
for(int i = 0; s[i] != '\0'; i++)
{
if(s[i] == '<' || s[i] == '[' || s[i] == '(' || s[i] == '{') stk.push(s[i]);
else{
if(stk.empty())
{
cout<<"no"<<endl;
flag = false;
break;
}
if(s[i] == '}' && stk.top() == '{') {
stk.pop();
continue;
}
if(s[i] == ')' && stk.top() == '('){
stk.pop();
continue;
}
if(s[i] == '>' && stk.top() == '<') {
stk.pop();
continue;
}
if(s[i] == ']' && stk.top() == '[') {
stk.pop();
continue;
}
cout<<"no"<<endl;
flag = false;
break;
}
}
if(flag) {
if(stk.empty())
cout<<"yes"<<endl;
else{
cout<<"no"<<endl;
}
}
return 0;
}