Parentheses Balance UVA - 673

You are given a string consisting of parentheses () and []. A string of this type is said to be correct:

  • (a) if it is the empty string
  • (b) if A and B are correct, AB is correct,
  • (c) if A is correct, (A ) and [A ] is correct.

Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.

Input

The file contains a positive integer n and a sequence of n strings of parentheses () and [], one string a line. Note that the string can contain arbitrary spaces and it can even be empty.

Output

A sequence of Yes or No on the output file.

Sample Input

3
([])
(([()])))
([()[]()])()

Sample Output

Yes
No
Yes

HINT

栈操作

Accepted

#include<bits/stdc++.h>
using namespace std;

int main() {
	ofstream fcout;
	fcout.open("temp.txt");
	int sum, flag = 0;
	string s;
	cin >> sum;getchar();
	while (sum--) {
		stack<char>S;
		flag = 0;
		getline(cin, s);
		for (int i = 0;i < s.length();i++) {
			if (s[i] == '['|| s[i] == '(')S.push(s[i]);
			else if (s[i] == ')')
				if (!S.empty() && S.top() == '(')S.pop();
				else { flag = 1;break; }
			else if (s[i] == ']')
				if (!S.empty() && S.top() == '[')S.pop();
				else { flag = 1;break; }
		}
	cout << (S.empty() && !flag ? "Yes" : "No") << endl;
	}
}
posted @   布拉多1024  阅读(41)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示