小马智行9.20 第四题

第四题提交的时候有问题,现在修改了一下,自己写了测试用例也过了,请大家看看还有没有没考虑到的地方,请帮忙提点建议
#include<iostream>
#include<vector>
#include<string>
#include<unordered_map>
#include<stack>

using namespace std;

int main() {
	int n;
	cin >> n;
	vector<string> s;
	for (int i = 0; i < n; i++) {
		string tem;
		cin >> tem;
		s.push_back(tem);
	}
	unordered_map<char,char> m;
	m[')'] = '(';
	m[']'] = '[';

	for (int i = 0; i < n; i++) {
		string t = s[i];
		int len = t.length();
		stack<char> c;
		stack<char> k;
		int  flag = 1;
		for (int j = 0; j < len; j++) {
			if ((t[0] != '(') || (t[j] == '[' && j < len - 1 && t[j + 1] != '(') || (t[j] == ',' && j < len - 1 && t[j + 1] != '(')) {
				flag = -1;
				break;
			}
			if (t[j] == ',')
				c.push(t[j]);

			if (c.size() > 1) {
				flag = -1;
				break;
			}
			if (t[j] == '[' || t[j] == ']')
			{
				while (!c.empty())
					c.pop();
			}
			if (t[j] == '(' || t[j] == '[')
				k.push(t[j]);
			if (t[j] == ')' || t[j] == ']') {
				if (k.top() == m[t[j]])
					k.pop();
			}
		}
		if (!k.empty()) {
			flag = -1;
			while (!k.empty())
				k.pop();
		}
		if (flag > 0)
			cout << 1 << '\n';
		else
			cout << 0 << '\n';
	}
	return 0;
}


输入:
5
(123)
(12)[23]
(1)[(2)[(3),(4)]]
1[(2)]
(1)[(2),(3),(4)]
期望输出:
1
0
1
0
0


#小马过河教育##笔试题目#
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务