题解: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;
}
后记:管理员审核辛苦了,谢谢管理员。