南陽理工OJ題目2----------------括弧対問題桟の使用

1382 ワード

説明
ここで、カッコのシーケンスがあります.このカッコがペアになっているかどうかを確認してください.
入力
1行目にN(0しゅつりょく
各入力データのセットの出力は1行を占め、その文字列に含まれる括弧がペアリングされている場合はYesを出力し、ペアリングされていない場合はNoを出力する
サンプル入力
3
[(])
(])
([[]()])

サンプル出力
No
No
Yes

左括弧および空きスタックがPUSHである場合、一致するかどうかを判断し、POPに一致する場合
最后にスタックが空いているかどうかを判断すればいい!!!
コード:
#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main()
{
	int N;
	cin>>N;
	while(N--)
	{
		string a;
		stack<char> s;
		cin>>a;
		for(int i=0;i<a.size();i++)
		{
			if(a[i]=='('||a[i]=='[')
				s.push(a[i]);
			else if(a[i]==')')
			{
				if(!s.empty()&&s.top()=='(')
					s.pop();
				else
					s.push(a[i]);
			}
			else if(a[i]==']')
			{
				if(!s.empty()&&s.top()=='[')
					s.pop();
				else
					s.push(a[i]);
			}
		}
		if(s.empty())
			cout<<"Yes"<<endl;
		else
			cout<<"No"<<endl;		
	}
	return 0;
}