描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
-
-
输入
-
第一行输入一个数N(0
-
输出
-
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
-
\
-
解答:
-
#include
#include
#include
using namespace std;
bool isAccept(string s){
stack sk;
char ch;
int len = s.length();
for (int i = 0; i < len; i++){
ch = s.at(i);
switch (ch)
{
case '(':
sk.push('(');
break;
case ')':
if (sk.empty()||sk.top() != '(')return false;
sk.pop();
break;
case '[':
sk.push('[');
break;
case ']':
if (sk.empty() || sk.top() != '[')return false;
sk.pop();
break;
default:
break;
}
}
if (!sk.empty())return false;
return true;
}
int main(){
string s="";
int num=0;
cin >> num;
int res[1000] = {0};
int i = 0;
while (i
{
cin >> s;
res[i]=(isAccept(s) ? 1 : 0);
i++;
}
i = 0;
while (i
{
cout << ((res[i] == 1) ? "Yes" : "No")<<endl;
i++;
}
return 0;
}