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();
}
利用栈的特性来实现对输入的括号是否合理进行判断。
该博客探讨了一种利用栈的特性来验证输入字符串中括号是否正确匹配的方法。通过遍历字符串,遇到开括号时将其对应的闭括号压入栈中,遇到闭括号时检查栈顶元素是否与之匹配。如果匹配则弹栈,否则返回错误。这种方法简洁高效,适用于括号的平衡判断问题。
1029

被折叠的 条评论
为什么被折叠?



