例题
P1739 表达式括号匹配
第一次想没考虑全情况
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define INF 0x3f3f3f3f3f
const int N = 1000010;
using namespace std;
int arr[N];
signed main()
{
string s;
cin>>s;
//用栈的知识 进栈 弹栈 判空
stack<char>st;
for(int i = 0 ; i< s.size();i++){
if(s[i] == '(')
st.push('(');
if(s[i] == ')')
st.pop();
}
if(st.empty())
cout<<"YES";
else
cout<<"NO";
return 0;
}
第二次 AC
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define INF 0x3f3f3f3f3f
const int N = 1000010;
using namespace std;
int arr[N];
signed main()
{
string s;
cin>>s;
//用栈的知识 进栈 弹栈 判空
stack<char>st;
for(int i = 0 ; i< s.size();i++){
if(s[i] == '(')
st.push('(');
if(s[i] == ')'){
+ //一开始就是')' 直接毙掉
+ if(st.empty()){
+ cout<<"NO";
+ return 0;
+ }
st.pop();
}
}
if(st.empty())
cout<<"YES";
else
cout<<"NO";
return 0;
}