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"(]"And"([)]"Are not.
Algorithm ideas:
This is a classic stack issue. I have adopted a large amount of data structures to ensure
The Code is as follows:
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 }
In fact, it is completely necessary, but I have learned a better data structure.