文章
61
粉丝
137
获赞
18
访问
38.4k
#include<bits/stdc++.h>
using namespace std;
//设置括弧的优先级
map<char,int> bkPriority = {
{'<', 0}, {'(', 1}, {'[', 2}, {'{', 3}
};
//设置括弧的匹配
map<char,char> bkMatch = {
{'>', '<'}, {')', '('}, {']', '['}, {'}', '{'}
};
bool match(string s){
int slen = s.size();
stack<char> stk;
for(int i = 0;i < slen; i++){
if(s[i] == '<' || s[i] == '(' || s[i] == '[' || s[i] == '{'){ //左括弧入栈处理
if(bkPriority[s[i]] > bkPriority[stk.top()]) //判断括号的优先级顺序正确
return false;
stk.push(s[i]);
}else{ //右括弧出栈匹配处理
if(stk.empty())
return false;
else if(stk.top() != bkMatch[s[i]])
return false;
else
stk.pop();
}
}
if(stk.empty())
return true;
else
return false;
}
int main() {
int...
登录后发布评论
stk.top()之前要确保栈不为空