括号配对问题
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数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;
}版权声明:
浙公网安备 33010602011771号