描述
现在,有一行括号序列,请你检查这行括号是否配对。
第一行输入一个数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;
}
标签:case,sk,return,int,问题,括号,break,配对 From: https://blog.51cto.com/u_15847885/5798126