C++随笔--A题:括号配对问题

描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0 输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No

Yes


c++代码如下:                                                                        //如果提交,需要将后面的system("pause");去掉

#include
#include
#include


using namespace std;


bool IsMatch(char *str){
char stack[10001];
int top = -1,i;
int num = strlen(str);
for (i = 0; i < num; i++){
switch (str[i]){
case '(':stack[++top] = str[i]; break;
case '[':stack[++top] = str[i]; break;
case ')':if (top < 0 || stack[top--] != '(')
return false; break;
case ']':if (top < 0 || stack[top--] != '[')
return false; break;
}
}
return top == -1;
}
int main(){
char str[101][10001];
int i, n;
cin >> n;
cin.get();
for (i = 0; i < n; i++)
{
cin.get(str[i], 10001);                                    //可将这两行代码换为cin.getline(str[i],10001),即将cin.get()删去
cin.get();
}
for (i = 0; i < n; i++){
if (IsMatch(str[i]))
cout << "Yes" << endl;
else cout << "No" << endl;
}
system("pause");
return 0;
}

你可能感兴趣的:(C++随笔--A题:括号配对问题)