stack
2024-01-22 10:07:48
发布于:上海
24阅读
0回复
0点赞
代码呈现
#include<iostream>
#include<string>
#include<stack>
using namespace std;
stack<char> markers;
string s;
int flag=0;
int main(){
getline(cin,s);
for(int i=0;i<s.size();i++){
if(s[i]=='@')break;
if(s[i]=='(')markers.push('(');
if(s[i]==')'){
if(markers.empty()){flag++;break;}
if(markers.top()=='(')markers.pop();
else{flag++;break;}
}
}
if(!markers.empty())flag++;
cout<<(!flag?"YES":"NO");
return 0;
}
思路分析
输入字符串,遍历
如果它是左括号,进栈
如果它是右括号:
1.栈头为左括号,左括号出栈
2.栈头没有(栈空了),标志变量增加,退出循环
3.栈头不是左括号,标志变量增加,退出循环
遍历结束后,如果栈还有(即括号还未配对完),标志变量增加
如果标志变量为0,输出YES,否则输出NO
这里空空如也
有帮助,赞一个