主要思路:
左括号进栈,右括号与栈定元素匹配,不匹配为false,匹配继续循环,最后栈为空返回true
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static String stackjudge(char[] stackString) {
Stack<Character> stack = new Stack<Character>();
for (char c : stackString) {
if (c == '[' || c == '(') {
stack.push(c);
} else if (c == ']' && stack.isEmpty() == false) {
if ('[' == stack.peek()) {
stack.pop();
} else {
return "No";
}
} else if (c == ')' && stack.isEmpty() == false) {
if ('(' == stack.peek()) {
stack.pop();
} else {
return "No";
}
} else {
return "No";
}
}
if (stack.isEmpty()) {
return "Yes";
} else {
return "No";
}
}
public static String[] getresult(ArrayList<char[]> arr) {
String[] result = new String[arr.size()];
for (int count = 0; count < arr.size(); count++) {
result[count] = stackjudge(arr.get(count));
}
return result;
}
public static void myprint(String[] result){
for (int count=0;count<result.length;count++){
System.out.println(result[count]);
}
}
public static void main(String args[]) {
ArrayList<char[]> arr = new ArrayList<char[]>();
char[] stackString = null;
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
for (int count = 0; count < len; count++) {
String input = sc.next();
int inputlength = input.length();
stackString = new char[inputlength];
stackString = input.toCharArray();
arr.add(stackString);
}
myprint(getresult(arr));
}
}