给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
1.奇数必错
2.HashMap存 右括号,左括号
3.遇到左括号放入栈,遇到右括号如果栈顶不是对应左括号则错,是则弹栈
4.如果非空说明左括号多了错
class Solution { public boolean isValid(String s) { //奇数必错 if(s.length()%2!=0)return false; char[] cs = s.toCharArray(); int l=cs.length; Map<Character,Character> map=new HashMap(){{ put(')','('); put(']','['); put('}','{'); } }; Deque<Character> d=new LinkedList(); for(char c:cs){ if(map.containsKey(c)){ if(d.isEmpty()||d.peek()!=map.get(c)){ return false; } d.pop(); } else{ d.push(c); } } return d.isEmpty(); } }