判断括号字符串是否合法(Java)
题目描述
给定一个只包含字符(,),{,},[和]的字符串,判断输入字符串是否有效。leetcode 20
解决
使用栈 代码:
public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); Map<Character,Character> map = new HashMap<>(); char[] chars = s.toCharArray(); map.put(),(); map.put(},{); map.put(],[); for(int i=0;i < s.length();i++){ if(!map.containsKey(chars[i])) { //为左括号时直接入栈 stack.push(chars[i]); }else{ //为右括号时,如果栈为空或者栈顶与该括号类型不匹配返回false if(stack.empty() || map.get(chars[i]) != stack.pop()){ return false; } } } //字符串遍历完毕后,如果栈为空返回true,反之返回false return stack.empty(); }