括号的匹配
题目 括号的匹配
思路分析
思路见 括号匹配
这题多了一个优先级的问题
不过就是加了一个条件 t<0入栈时判断一下优先级 若比栈顶元素高就false
代码实现
#include<bits/stdc++.h>
using namespace std;
unordered_map<char,int> mp={
{'{',-1},
{'}',1},
{'[',-2},
{']',2},
{'(',-3},
{')',3},
{'<',-4},
{'>',4}
};
string s;
bool check(){
stack<int> stk;
for(auto c:s){
int t=mp[c];
if(t<0){
if(stk.size() && t>stk.top())
return false;
else
stk.push(t);
}
else if(t>0){
if(stk.size() && stk.top()==-t)
stk.pop();
else
return false;
}
}
return stk.empty();
}
int main()
{
int n;cin>>n;
while(n--){
cin>>s;
if(check())
puts("YES");
else
puts("NO");
}
return 0;
}
💬 评论