非独立思考
class Solution {public boolean isValid(String s) {if (s.length() % 2 == 1) {return false;}Stack stack = new Stack();// 用各种if else太蠢,精巧的设计:// 为了快速判断括号的类型可以使用哈希表存储每一种括号。// 哈希表的键为右括号,值为相同类型的左括号。// 想要用左括号匹配有括号,那么每次需要判断栈中有无左括号匹配右括号Map<Character, Character> map = new HashMap<>(16);map.put(')', '(');map.put(']', '[');map.put('}', '{');for (int i = 0; i < s.length(); i++) {char curChar = s.charAt(i);if (map.containsKey(curChar)) {// 如果当前栈中无内容,肯定返回false,因为来的是右括号。// 如果栈顶的无法匹配上相应的右括号,也返回false,因为不服题意。if (stack.size() == 0 || stack.peek() != map.get(curChar)) {return false;}stack.pop();} else {stack.add(curChar);}}return stack.size() == 0;}}
