top1编程
← 返回题目
题解

表达式括号匹配

1 条题解

  • 0
    @ 2026-7-28 22:45:16
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        stack<char> s; //用来存所有左括号
        char c; //每次读取的单个字符
        while(cin>>c){ //循环读取输入里每一个字符
            if(c == '@'){ //停止读取
                break;
            }
            if(c == '('){ // 碰到左括号入栈保存
                s.push(c);
            }
            if(c == ')'){ // 碰到右括号,需要匹配左括号
                if(s.empty()){ // 栈空,没有多余左括号和它配对,括号不匹配
                    cout<<"NO"<<endl;
                    return 0;
                }
                s.pop(); // 弹出一个左括号,完成一对括号匹配
            }
        }
        if(s.empty()){ // 遍历完所有字符,栈空代表全部左括号都配对完毕
            cout<<"YES"<<endl;
        }else{ // 栈里还有剩下左括号,右括号数量不够,匹配失败
            cout<<"NO"<<endl;
        }
        return 0;
    }
    
    • 1