上一篇中,我只是实现了(与)的括号匹配,没有实现其他括号,比如[ ,]和{,},多括号相配,
具体实现依然是使用栈,遍历字符串,遇到),], }字符时,出栈,最后判断栈是否为空。
具体代码java:
public boolean kuohao( String s){
if (null==s ){
return false;
}
Map<Character,Character> characterMap=new HashMap<>();
characterMap.put(')','(');
characterMap.put(']','[');
characterMap.put('}','{');
Stack<Character> stack=new Stack<>();
char[] chars=s.toCharArray();
for (char ch :chars){
if (characterMap.containsKey(ch)){
if (stack.isEmpty()){
return false;
}
//下面这段if判断语句,是为了加快算法,也可以不用判断,直接pop
/* if (stack.peek()==characterMap.get(ch)){
stack.pop();
} else {
return false;
}*/
//直接pop需要遍历整个字符串
stack.pop();
}else {
stack.push(ch);
}
}
if (stack.isEmpty()){
return true;
}
return false;
}