您的位置:首页 > 其它

NYOJ-2 括号配对问题

2014-08-04 20:06 169 查看


括号配对问题

时间限制:3000 ms | 内存限制:65535 KB
难度:3

描述现在,有一行括号序列,请你检查这行括号是否配对。

输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])


样例输出
No
No
Yes


v.back():表示返回最后一个数据。

v.end():表示返回最后一个数据的下一个的下标。

*(v.end()-2):表示倒数第二个的数据值。

[ ] ( )的 ascll 分别为91 ,93 ,40,41

v.back()-1==*(v.end()-2) 判断 [ ]

v.back()-2==*(v.end()-2) 判断( )

01.
#include<iostream>


02.
#include<vector>


03.
#include<string>


04.
using
namespace
std;


05.
int
main()


06.
{


07.
int
n;


08.
cin>>n;


09.
while
(n--)


10.
{


11.
vector<
char
>
vec;


12.
string
ch;


13.
vec.push_back(
'
'
);


14.
cin>>ch;


15.
for
(
int
i=0;i<ch.length();i++)


16.
{


17.
vec.push_back(ch[i]);


18.
if
(
vec.back()-1 == *(vec.end()-2) || vec.back()-2 == *(vec.end()-2))


19.
{


20.
vec.pop_back();


21.
vec.pop_back();


22.
}


23.
}


24.
if
(vec.size()==1)


25.
cout<<
"Yes"
<<endl;


26.
else


27.
cout<<
"No"
<<endl;


28.
}


29.
return
0;


30.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: