题目描述
给定一个长度为 n 的字符串,字符串由 (,),[,]组成, 问 s 是不是一个合法的括号序列。 合法的括号序列的定义是:
- 空串是一个合法的括号序列。
- 若 A 是一个合法的括号序列,则 (A),[A]也是合法的括号序列
- 若 A,B 都是合法的括号序列,则 A,B 也是合法的括号序列。
样例输入
10
[]([(())])
4
[(])
样例输出
Yes
No
#include<bits/stdc++.h>
using namespace std;
stack<char>sd;
int main(){
int n,b=0;
string s;
cin>>n;
cin>>s;
for(int i=0;i<n;i++) {
if(s[i]=='('||s[i]=='[')
sd.push(s[i]),b++;
else if((sd.top()=='('&&s[i]==')')||(sd.top()=='['&&s[i]==']'))
sd.pop(),b--;
else
sd.push(s[i]),b++;
}
if(b==0) cout<<"Yes";
else cout<<"No";
return 0;
}