题解:P1739 表达式括号匹配

· · 题解

此题用栈即可。

那栈是什么呢?

栈是一种数据结构,可以在栈顶进行入栈和出栈。

注意:栈是后进先出的。

那么,此题就简单了,思路如下:

首先,输入字符串;

然后循环:

如果当前是左括号,将其放入栈;

否则如果当前是右括号,如果栈不为空(因为此题只有左括号,否则还要判断),弹出栈顶元素;否则不匹配,直接输出和退出。

最后,如果栈内还有东西,代表还没匹配完,即不匹配;否则就是匹配的。

最后,代码如下:

#include<bits/stdc++.h>
using namespace std;
string a;
stack<char>stk;
signed main(){
    cin>>a;
    for(int i=0;i<a.size();i++){
        if(a[i]=='('){
            stk.push('(');
        }
        if(a[i]==')'){
            if((!stk.empty())&&stk.top()=='('){
                stk.pop();
            }
            else{
                cout<<"NO";
                return 0;
            }
        }
    }
    if(stk.empty()) cout<<"YES";
    else cout<<"NO";
    return 0;
}

后记:管理员审核辛苦了,谢谢管理员。