public static void main(String[] args) {
System.out.println(isValid("{}()[{)]")); // false
System.out.println(isValid("(){}[]{([])}")); // true
}
public static boolean isValid(String s){
// 利用栈的先进后出原则
Stack<Character> stack = new Stack<>();
// 遍历每一个符号
for (Character c:s.toCharArray()){
if (c == '{') {
stack.push('}');// 压它对应的另一半符号
}else if (c == '(') {
stack.push(')');
}else if(c == '['){
stack.push(']');
}else if (stack.isEmpty() || stack.pop() != c){
// 如果栈为空则直接返回FALSE且不继续判断后面的,栈不为空且匹配不到上面的则是必须弹栈去对应左半边符号,如果弹栈元素和输入的不一样则就是不符合规则
return false;
}
}
return stack.isEmpty();
}
利用栈的特性来实现对输入的括号是否合理进行判断。