[括号配对]
首先可以初始化一个栈,然后执行程序后每次获取一个_sarray字符串中的字符如果是正括号将其压入栈,
如果是反括号就取出栈顶元素与其匹配,如果匹配成功则flag++,并将栈顶top--;如果匹配不成功,那么就将flag赋值为0.当
所有栈内元素都匹配完成(top == 0)时将结果输出即可.
#include<iostream>
#include<string.h>
using namespace std;
int main() {
char _sarray[10000];
int n = 0;
cin >> n;
while (n--) {
int flag = 0;
char _stack[10000];
int top = 0;
char temp;
cin >> _sarray;
int lenth = strlen(_sarray);
for (int i = 0; i < lenth; i++) {
if (_sarray[i] == '[' || _sarray[i] == '(') {
_stack[++top] = _sarray[i];
continue;
}
if (_sarray[i] == ']') {
temp = _stack[top];
if (temp == '[') {
flag++;
top--;
continue;
}
else {
flag = 0;
break;
}
}
if (_sarray[i] == ')') {
temp = _stack[top];
if (temp == '(') {
flag++;
top--;
continue;
}
else {
flag = 0;
break;
}
}
}
if (flag > 0 && top == 0) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
}
return 0;
}