括号配对问题
描述现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
-
3 [(]) (]) ([[]()])
- 样例输出
-
No No Yes
1 import java.util.Scanner; 2 import java.util.Stack; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner scanner=new Scanner(System.in); 7 char s[]=new char[10010]; 8 int T; 9 int i; 10 Stack<String> stack=new Stack<String>(); 11 12 T=scanner.nextInt(); 13 14 while(true){ 15 if(T==0) 16 break; 17 T--; 18 19 s=scanner.next().toCharArray(); 20 21 for(i=0;i<s.length;i++){ 22 if(s[i]=='[' || s[i]=='(') 23 stack.push(s[i]+""); 24 25 else if(s[i]==']'){ 26 if(stack.empty()==false && stack.peek().compareTo("[")==0) 27 stack.pop(); 28 else 29 stack.push(s[i]+""); 30 } 31 32 else if(s[i]==')'){ 33 if(stack.empty()==false && stack.peek().compareTo("(")==0) 34 stack.pop(); 35 else 36 stack.push(s[i]+""); 37 } 38 } 39 40 if(stack.empty()==true) 41 System.out.println("Yes"); 42 43 else{ 44 System.out.println("No"); 45 stack.clear(); 46 } 47 } 48 } 49 }