您的位置:首页 > 编程语言 > Java开发

括号配对问题Java

2014-04-15 21:03 369 查看


括号配对问题

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

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

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


样例输出
No
No
Yes


来源网络
上传者naonao

01.
import
java.util.Scanner;


02.
import
java.util.Stack;


03.
public
class
Main
{


04.
public
static
void
main(String[]args){


05.
Scanner
sc=
new
Scanner(System.in);


06.
int
n=sc.nextInt();


07.
Stack<Character>
stack=null;


08.
while
(n!=0){


09.
String
str=sc.next();


10.
if
(str.length()%2!=0){


11.
System.out.println(
"No"
);


12.
}
else
{


13.
stack=
new
Stack<Character>();


14.
for
(
int
i=0;i<str.length();i++){


15.
if
(stack.isEmpty()){


16.
stack.push(str.charAt(i));


17.
}
else
if
(stack.peek()==
'['
&&str.charAt(i)==
']'
||stack.peek()==
'('
&&str.charAt(i)==
')'
){


18.
stack.pop();


19.
}
else
{


20.
stack.push(str.charAt(i));


21.
}


22.
}


23.
if
(stack.isEmpty()){


24.
System.out.println(
"Yes"
);


25.
}
else
{


26.
System.out.println(
"No"
);


27.
}


28.
}


29.
n--;


30.
}


31.
}


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