import java.util.ArrayDeque; import java.util.Deque; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Deque<Character> staCharacters = new ArrayDeque<>(); Scanner scanner = new Scanner(System.in); String string = scanner.next(); for (int i = 0; i < string.length(); i++) { char c = string.charAt(i); if (c == '(' || c == '[') { staCharacters.push(c); } if (c == ')') { if (staCharacters.isEmpty()) { System.out.println("false"); return; } else { if (staCharacters.peek() != '(') { System.out.println("false"); return ; } else { staCharacters.pop(); } } } else if (c == ']') { if (staCharacters.isEmpty()) { System.out.println("false"); return; } else { if (staCharacters.peek() != '[') { System.out.println("false"); return ; } else { staCharacters.pop(); } } } } System.out.println("true"); } }
括号匹配的思想其实不难,就是检索字符串的每一个字符,如果是'('或'[',就压入栈中,如果是')'或']'就判断栈顶元素是否为对应的左括号,不过不是对应的那么就是false,如果是,那就弹出,继续判断,一直到最后都没有问题就返回true