文章

43

粉丝

24

获赞

293

访问

6.6k

头像
括号的匹配 题解:左压右出,四种错误情况
P1067 中山大学2019年机试题
发布于2025年2月26日 08:50
阅读数 131

#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(!stk.empty() && bkPriority[s[i]] > bkPriority[stk.top()])//栈不空说明该括号包含在其他括号之内,此时判断括号的优先级顺序正确 
                    return false;         &nbs...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发