GitBook

这里写图片描述

用栈来检测是否对应

#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
char s[10200];
stack<char>q;
bool judge(char a,char b) {
	if(a=='('&&b==')')
		return false;
	if(a=='['&&b==']')
		return false;
	return true;
}
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		scanf("%s",s);
		int l=strlen(s);
		bool flag=true;
		while(!q.empty())
			q.pop();
		for(int i=0; i<l; i++) {
			if(!flag)
				continue;
			if(s[i]=='['||s[i]=='(')
				q.push(s[i]);
			else {
				if(q.empty()||judge(q.top(),s[i]))
					flag=false;
				else
					q.pop();
			}
		}
		printf("%s\n",flag?"Yes":"No");
	}
	return 0;
}

题目地址:【NYOJ】[2]括号配对问题