描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3 [(]) (]) ([[]()])样例输出
No No Yes
import
java.util.Scanner;
import
java.util.Stack;
public
class
Main {
/**
* @param args
*/
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
Scanner scan =
new
Scanner(System.in);
int
n = scan.nextInt();
Stack<Character> stack;
while
(n !=
0
)
{
String s = scan.next();
if
(s.length() %
2
==
1
)
//串长为奇数肯定不匹配
System.out.println(
"No"
);
else
//为偶数时
{
stack =
new
Stack<Character>();
for
(
int
i =
0
;i < s.length();i++)
{
if
(stack.isEmpty())
stack.push(s.charAt(i));
else
if
((stack.peek() ==
'['
&& s.charAt(i) ==
']'
)
|| (stack.peek() ==
'('
&& s.charAt(i) ==
')'
))
stack.pop();
else
stack.push(s.charAt(i));
}
if
(stack.isEmpty())
System.out.println(
"Yes"
);
else
System.out.println(
"No"
);
}
n--;
}
}
}