隐藏用户y 2024-06-07 18:40 采纳率: 64.4%
浏览 1
已结题

在算法题20有效的括号中,以下代码运行测试用例没有通过的原因

在算法题20有效的括号中,以下代码运行测试用例没有通过的原因在哪里

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
    // 若括号数是奇数,一定有不匹配的括号
    if (s.length % 2 == 1) return false;
    // 使用栈匹配括号
    let stack = [];
    // 遍历s,若遍历到左括号就把右括号放进stack里面
    for (let i = 0; i < s.length; i++) {
        if (s[i] == '(') stack.push(')')
        else if (s[i] == '{') stack.push('}')
        else if (s[i] == '[') stack.push(']')
        // 若stack为空或者stack栈顶元素与当前括号不匹配就不是有效括号
     
            if (stack.length == 0 || stack.pop !== s[i]) { return false }
            else stack.pop();
        
    }

    // 遍历完s里面还有,就不是有效括号
    return !stack.length
};

  • 写回答

3条回答 默认 最新

  • 隐藏用户y 2024-06-07 18:57
    关注

    循环遍历s匹配括号过程中,若栈顶元素和当前元素不匹配的判断应该是

            // 若stack为空或者stack栈顶元素与当前括号不匹配就不是有效括号
            else if (stack.length == 0 || stack[stack.length - 1] !== s[i]) { return false }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月7日