括號配對問題
- 描述
- 現在,有一行括號序列,請你檢查這行括號是否配對。
- 輸入
- 第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),測試數據組數少於5組。數據保證S中只含有"[","]","(",")"四種字符
- 輸出
- 每組輸入數據的輸出佔一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
- 樣例輸入
-
3 [(]) (]) ([[]()])
- 樣例輸出
-
No No Yes
代碼如下:
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int N;
scanf("%d",&N);
while(N--){
vector<char> str;
string s;
cin>>s;
str.push_back(s[0]);
for(int i=1;i<s.size();i++){
if((s[i]==']'&&str.back()=='[')||(s[i]==')'&&str.back()=='(')){
str.pop_back() ;
}else{
str.push_back(s[i]);
}
}
if(str.empty()){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}
return 0;
}