Skip to content

在leetcode题解/栈与队列一文中 对于4.用栈实现括号匹配的相关错误: #1214

Open
@xjx403

Description

@xjx403
  1. 用栈实现括号匹配
    给出的代码有问题,原代码在示例 ”(("中会返回true(实际应该返回false), 原因是会连续压栈两次。
    给出修改:
    在返回true之前加一个判断,如果当前堆栈不为空,则返回false,完整代码如下:
    public boolean isValid(String s) {
    //修改,减少运算量。
    if(s.length()%2 != 0){
    return false;
    }
    Stack stack=new Stack<>();
    for (char c:s.toCharArray()) {
    if(c == '(' || c== '{' || c == '['){
    stack.push(c);
    }else{
    if(stack.empty()) return false;
    char cStack=stack.pop();
    boolean b1= cStack=='(' && c!=')';
    boolean b2= cStack== '{' && c!='}';
    boolean b3= cStack== '[' && c!=']';
    if(b1 || b2 ||b3){
    return false;
    }
    }
    }
    //修改,避免“((”的情况。
    if(!stack.empty()){
    return false;
    }
    return true;
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions