模拟堆栈,遇到()或者[]就出栈,如果最后堆栈为空则说明合法
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Stack<Character> s = new Stack<>();
int n = scan.nextInt();
scan.nextLine();
for(int i=0;i<n;i++){
while(!s.isEmpty()){
s.pop();
}
String str = scan.nextLine();
for(int j=0;j<str.length();j++){
char c = str.charAt(j);
if(c=='('||c=='['){
s.add(c);
}else if(c==')'||c==']'){
if(s.isEmpty()){
s.add(c);
}
if(c==']'){
if(s.peek()=='['){
s.pop();
}
}else if(c==')'){
if(s.peek()=='('){
s.pop();
}
}
}
}
if(s.isEmpty()){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
}
}