UVa673

//UVa673 - Parentheses Balance
//已AC
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(){
	int T;
	cin>>T;
	getchar();	//cin.get(); 读取整数后面的第一个换行符,防止误导后面的getline();
	while(T--){
		string str;
		stack<char>s;
		getline(cin,str);	//读取包括换行符在内的一整行(但是不输出换行符??)
		int ok = 1;
		for(int i = 0; i < str.size(); i++){
			if(str[i] == '(' || str[i] == '[') s.push(str[i]);
			else if(!s.empty()&& s.top() == '(' && str[i] == ')') s.pop();
			else if(!s.empty()&& s.top() == '[' && str[i] == ']') s.pop();
			else ok = 0;
		}
		ok&&s.empty()? cout<<"Yes
": cout<<"No
";
	}
	return 0;
}

原文地址:https://www.cnblogs.com/gwj1314/p/9444921.html