public boolean isValid(String s) {
HashMap<Character,Character> map = new HashMap<>() ;
map.put(')','(');
map.put('}','{');
map.put(']','[');
Stack<Character> stack = new Stack<>();
char[] chararray = s.toCharArray() ;
for(int i=0;i<chararray.length;i++){
char thischar = chararray[i];
if(map.containsValue(thischar)){
// 只有( { [ 才能入栈
stack.push(thischar) ;
}else if(map.containsKey(thischar)){
if(stack.empty()){
return false;
}
// 当遇到 ) } ] 的时候 查询栈顶 是不是 ( { [ 如果是 出栈
if(stack.peek()==map.get(thischar)){
stack.pop();
}else {
return false;
}
}
}
//最后检查栈是否为空
return stack.empty();
}
测试:
())))
(***)-[{-------}]
(2+4)*a[5]
({}[]]])
参考: https://blog.youkuaiyun.com/nmgrd/article/details/69101406