文章
55
粉丝
100
获赞
12
访问
30.9k
#include<stdio.h>
#include<iostream>
#include<stack>
#include<map>
using namespace std;
int main(){
stack<char> stk;
map<char,int> priority = {
{'<',1},
{'(',2},
{'[',3},
{'{',4}
};
//如果入栈元素的优先级大于栈顶元素的优先级则直接报错
int n;
cin>>n;
string str;
for(int j = 0; j<n; j++){
cin>>str;
int len = str.length();
for(int i = 0; i<len; i++){
//当栈不为空时,入栈时需要判断
if(!stk.empty()){
if(str[i] == '<' || str[i] == '(' || str[i] == '[' || str[i] == '{'){//若是左括号就进行优先级判断
if(priority[str[i]] > priority[stk.top()]){//若优先级大于栈顶元素,则直接终止循环,因为栈里面还有元素,可以直接在下面输出NO
break;
}
stk.push(str[i]);
}else if(str[i] == '>' && stk.top()=='<'|| str[i] == ')' && stk.top() == '(' || str[i] == ']'...
登录后发布评论
暂无评论,来抢沙发