括號配對問題 【nyoj-2】【stl】

括號配對問題

時間限制:3000 ms  |  內存限制:65535 KB
難度:3
描述
現在,有一行括號序列,請你檢查這行括號是否配對。
輸入
第一行輸入一個數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;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章