首页 > 代码库 > [leetcode]Valid Parentheses

[leetcode]Valid Parentheses

Valid Parentheses

Given a string containing just the characters ‘(‘‘)‘‘{‘‘}‘‘[‘ and ‘]‘, determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

 

算法思路:

很经典的栈问题,我采用了大量的数据结构,以保证

代码如下:

 1 public class Solution { 2     public boolean isValid(String s) { 3         if(s == null || (s.length() & 1 )== 1) return false; 4         Set<Character> leftSet = new HashSet<Character>(); 5         Set<Character> rightSet = new HashSet<Character>(); 6         char[] left = {‘(‘,‘[‘,‘{‘}; 7         char[] right = {‘)‘,‘]‘,‘}‘}; 8         Map<Character,Character> pair = new HashMap<Character,Character>(); 9         for(int i = 0; i < left.length;leftSet.add(left[i]),pair.put(left[i], right[i++]));10         for(int i = 0; i < right.length;rightSet.add(right[i++]));11         Stack<Character> stack = new Stack<Character>();12         for(int i = 0; i < s.length(); i++){13             char c = s.charAt(i);14             if(leftSet.contains(c)) {15                 stack.push(c);16             }else if(rightSet.contains(c)){17                 if(stack.isEmpty() || c != pair.get(stack.pop()) ) return false; 18             }19         }20          return stack.isEmpty();21     }22 }

其实完全木有必要,但是我学的数据结构还是多用比较好