小马智行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)]]
(123)
(12)[23]
(1)[(2)[(3),(4)]]
1[(2)]
(1)[(2),(3),(4)]
期望输出:
期望输出:
1
0
1
0
0
查看9道真题和解析
海康威视公司氛围 920人发布