文章

34

粉丝

89

获赞

3

访问

20.5k

头像
南京理工-括号匹配 题解:使用stack 轻松解决
P1838 南京理工大学机试题
发布于2024年3月30日 17:19
阅读数 551

#include<bits/stdc++.h>
using namespace std;
int GetPriority(char ch){
    if(ch == '(' || ch == ')') return 1;
    if(ch == '<' || ch == '>') return 2;
    if(ch == '[' || ch == ']') return 3;
    if(ch == '{' || ch == '}') return 4;
}

bool is_Left(char ch){
    if(ch == '<' || ch == '(' || ch == '{' ||  ch == '['){
        return true;
    }
    return false;
}
stack<char> sta;

int main() {
    string para;
    bool is_fit = true;
    while(cin >> para){
        int len = para.size();
        for(int i = 0;i < len;i++){
            char ch = para[i];
            if(is_Left(ch)){
                sta.push(ch);

            }else{
                if(sta.empty()){
                    is_fit = false;

                }else{
                    int left = GetPriority(sta.top());
                    int right = GetPriority(ch);
                    if(left == right){
                        sta.pop();
                  ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发