Given a string containing just the characters '(', ')', '{', '}', '['
and ']', determine if the input string is valid.An input string is valid if:
Open brackets must be closed by the same type of brackets. Open
brackets must be closed in the correct order. Note that an empty
string is also considered valid.Example 1:
Input: "()" Output: true Example 2:
Input: "()[]{}" Output: true Example 3:
Input: "(]" Output: false Example 4:
Input: "([)]" Output: false Example 5:
Input: "{[]}" Output: true
正确的原则在于,需要关闭的时候最近的是匹配的,可以用栈来辅助实现
public boolean isValid(String s) { char[] array=s.toCharArray(); Stack<Character> stack=new Stack(); for(char c:array){ if(c=='{' || c== '(' ||c=='[') stack.add(c); else{ if(stack.isEmpty()) return false; if(c=='}'){ if(stack.pop()!='{') return false; }else if(c==']'){ if(stack.pop()!='[') return false; }else if(c==')'){ if(stack.pop()!='(') return false; } } } return stack.isEmpty(); }