括号配对问题
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
// bracketmatch.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<stack> #include<iostream> using namespace std; bool bracketmatch(char*in); int _tmain(int argc, _TCHAR* argv[]) { char*a = "[(]([[]()]))"; if(bracketmatch(a)) cout<<"匹配"<<endl; else cout << "不匹配" << endl; system("pause"); return 0; } bool bracketmatch(char*in) { stack<char>a, b; while (*in != '\0') { if (*in == '(') a.push('('); if (*in == '[') b.push('['); if (*in == ')') { if (a.top() == '(') a.pop(); else return false; } if (*in == ']') { if (b.top() == '[') b.pop(); else return false; } in++; } return true; }
版权声明: