import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { //临界条件 if(s.length() < 2) { return false; } Map<Character,Character> map = new HashMap<>(); map.put('}','{'); map.put(')','('); map.put(']','['); //辅助栈用来模拟入栈出栈判断是否是闭合序列 Stack<Character> stack = new Stack<>(); for(char c : s.toCharArray()) { //flag用于判断括号序列是否入栈 boolean flag = false; if(map.containsKey(c)) { //当栈为空 并且出栈元素不等于当前value if(stack.isEmpty() || stack.pop() != map.get(c)) { return false; } else { flag = true; } } if(!flag) { stack.push(c); } } return stack.isEmpty(); } }