这里也可以通过switch来进行匹配,可能效果更好。
[()]√,
([)]×
每一次与栈顶的比较都是如上示例一样的效果,对应就√,不对应就×。
/*
遇到左括号,把要配对的右括号放入栈顶
遇到右括号,把它与栈顶元素相比较
若相等,栈顶元素弹出,继续对比下一组,
若不等,无效括号直接返回false
*/
/**
* 判断字符串的括号是否有问题
* @param s 传递的参数
* @return
*/
public static boolean isValid(String s){
ArrayStack<Object> stack = new ArrayStack<>(s.length());
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '('){
stack.push(')');
}else if (c == '['){
stack.push(']');
}else if (c == '{'){
stack.push('}');
}else {
if (stack.peek().equals(c)) {
stack.pop();
}else {
return false;
}
}
}
return stack.isEmpty();
}