Thursday, June 11, 2015

UVa 673 - Parentheses Balance

// UVa 673 - Parentheses Balance

#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main() {
	int cases;
	cin >> cases;
	string c;
	getline(cin, c);
	for (; cases; cases--) {
		stack<char> s;
		getline(cin, c);
		bool bad = false;
		for (int i = 0; i < c.length(); i++) {
			if (c[i] == '(' || c[i] == '[')
				s.push(c[i]);
			else {
				if (s.size() == 0) {
					bad = true;
					break;
				}
				char top = s.top();
				if ((c[i] == ')' && top != '(') || (c[i] == ']' && top != '[')) {
					bad = true;
					break;
				}
				s.pop();
			}
		}
		if (s.size() > 0)
			bad = true;
		cout << (bad ? "No" : "Yes") << endl;
	}
	return 0;
}

No comments:

Post a Comment