leetcode有效的括号java实现
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true
数据 结构选择:
1)选择map保存括号之间的对应关系:使用到put,get,containsKey
2)选择stack来匹配对应关系:使用到push,pop,peek,empty方法
class Solution { public boolean isValid(String s) { if(s.length()%2!=0) return false; if(s.equals("")) return true; Map<Character,Character> map = new HashMap<Character,Character>(); map.put('(',')'); map.put('{','}'); map.put('[',']'); Stack<Character> stack = new Stack<Character>(); for(int i=0;i<s.length();i++) { char c=s.charAt(i); if(map.containsKey(c)) { stack.push(c); } else { if(!stack.empty()&&map.get(stack.peek())==c) stack.pop(); else return false; } } return stack.empty(); } }