假如定义形如"{}[]()"或者"{[()]}"的模式为valid,"[{]"或者"(("的模式为invalid,那么我们可以使用一个stack或者递归下降的方法实现.
这里我先用stack实现一次.
实现的思路是.
当遇到开始符号时('[','{'或者'('),我们就将其push进栈。当遇到结束符号的时候,就pop盏里面的元素看是否匹配,否则返回false.
public boolean isValid(String s) { char[] cs = s.toCharArray(); if (cs.length % 2 != 0) return false; Stack<Character> stack = new Stack<Character>(); for(int i=0;i<cs.length;i++){ if(cs[i]=='[' || cs[i] == '(' || cs[i] == '{'){ stack.push(cs[i]); }else{ if(stack.isEmpty()) return false; switch (stack.pop()){ case '(': if(cs[i]!=')') return false; break; case '[': if(cs[i]!=']') return false; break; case '{': if(cs[i]!='}') return false; break; } } } if(!stack.isEmpty()) return false; return true; }