问题描述
小蓝有一个长度为 nn 的括号串,括号串仅由字符 (
、 )
构成,请你帮他判断一下该括号串是否合法,合法请输出 Yes
,反之输出 No
。
合法括号序列:
-
空串是合法括号序列。
-
若 ss 是合法括号序列,则
(
ss)
也是合法括号序列。 -
若 s,ts,t 都是合法括号序列,则 stst 也是合法括号序列。
例如 ()()
, (())
, (())()
均为合法括号序列。
输入格式
第一行包含一个正整数 nn ,表示括号串的长度。
第二行包含一个长度为 nn 的括号串。
输出格式
输出共 11 行,若括号串合法请输出 Yes
,反之输出 No
。
样例输入1
10
(()(()))()
样例输出1
Yes
样例输入2
5
()()(
样例输出2
No
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
stack<char> st;
bool judge()
{
for(int i=0;i<n;i++)
{
if(s[i]=='(')
st.push(s[i]);
if(s[i]==')')
{
if(st.empty())
return false;
st.pop();
}
}
if(st.empty())
return true;
else
return false;
}
int main()
{
cin>>n;
cin>>s;
if(judge())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;
}