Time Limit: 1sec Memory Limit:256MB
Description
检查输入字符串中的括号是否匹配。括号包括:{, }, (, ), [, ].
Input
第一行是一整数,即测试样例个数n.
以下n行,每一行是一个长度不超过100个字符的字符串。
Output
第一行是一整数,即测试样例个数n.
以下n行,每一行是一个长度不超过100的字符串。
Sample Input
Copy sample input to clipboard
4
a
2-[(1+2)*2]
(a+b])
([a+b)]
Sample Output
Yes
Yes
No
No
[]~( ̄▽ ̄)~*
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool right(const string& str)
{
stack<char> S;
for (int i = 0; i < str.length(); i++)
{
if (str[i] == '{' || str[i] == '[' || str[i] == '(')
S.push(str[i]);
else if (str[i] == ')')
{
if (S.empty() || S.top() != '(')
return false;
else
S.pop();
}
else if (str[i] == ']')
{
if (S.empty() || S.top() != '[')
return false;
else
S.pop();
}
else if (str[i] == '}')
{
if (S.empty() || S.top() != '{')
return false;
else
S.pop();
}
}
if (!(S.empty()))
return false;
return true;
}
int main()
{
int N; cin >> N;
for (int i = 0; i < N; i++)
{
string str; cin >> str;
if (right(str))
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}