题目描述
Given a string P only consist of characters with (), [] and {}. Now BaoBao wants to know whether P can form a valid bracket string.
As we can know, in a valid bracket string, for each "(", we can find a ")" behind it. In the same way, "[" and "{" also can find their "]" and "}".
For example, "()","[]","{}","(()())","({})" are the valid bracket string.
输入
The first line contains a integer T(1 <= T <= 100), which indicates the number of test cases.
The next T lines, each line only contains a bracket string Pi(|Pi| <= 2*105).
It guaranteed that the sum of |Pi| <= 2*105.
输出
For each test cases, you just output "YES" if the string is valid or "NO" for not valid.
样例输入
4
({})
{{}}
({[}])
}{
样例输出
YES
YES
YES
NO
注释:写道简单思维题放松一下
代码:
#include<bits/stdc++.h>
using namespace std;
int s1[6];
int t;
string s;
int main(){
while(~scanf("%d",&t)){
memset(s1,0,sizeof(s1));
cin>>s;
int n=s.size();
int q=1;
for(int i=0;i<n;i++){
if(s[i]=='(')s1[0]++;
if(s[i]==')')s1[1]++;
if(s[i]=='[')s1[2]++;
if(s[i]==']')s1[3]++;
if(s[i]=='{')s1[4]++;
if(s[i]=='}')s1[5]++;
if(s1[0]<s1[1]||s1[2]<s1[3]||s1[4]<s1[5]){
q=0;break;
}
}
if(s1[0]!=s1[1]||s1[2]!=s1[3]||s1[4]!=s1[5])q=0;
if(q)printf("YES\n");
else printf("NO\n");
}
}