请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请教老师代码错误问题,谢谢

var isValid = function(s) { 
// 1.判断数组是否为 空 或 奇数,若有,则跳出直接输出 false。
const length = s.length
if (!s || length % 2 === 1) {return false} 

// 2.数组分为两个数组? 一组从最左到中间,另一组从最右到中间 遍历两数组并判断 数组1 与 数组2 是否匹配。
const stack1 = []
const stack2 = []
for (let i = 0; i < (length / 2); i += 1) 
    {
    const a = s [i]
    stack1.push(a)
    for (let j = (length-1); j > (length / 2); j -= 1) 
        {const b = s [j]
         stack2.push(b)
         for(let k = 0; k < (length / 2); k += 1) 
        {
            if (
                (stack1(i) === '(' && stack2(i) === ')') ||
                (stack1(i) === '{' && stack2(i) === '}') ||          
                (stack1(i) === '[' && stack2(i) === ']')
                ) 
            {return true} 
            else 
            {return false}
        }
    }
}
};

老师,可以麻烦您帮我看下这个代码是哪里出错了吗?

 这个思路不用栈的话可以吗?

多谢老师。

正在回答 回答被采纳积分+3

1回答

lewis 2021-06-05 11:52:07

从逻辑上就是错的,合法的括号不一定是对称的,建议按照课程思路实现,另外这道题最适合用栈,别的思路本质也是栈

0 回复 有任何疑惑可以回复我~
  • 提问者 less_is_better #1
    好的老师。
    不好意思我还想请教您一下,逻辑错误的话,是说我想从 s 数组最左取一个,最右取一个,对比是否匹配,若匹配再往中心推进的思路是错的吗?
    回复 有任何疑惑可以回复我~ 2021-06-05 12:17:42
  • lewis 回复 提问者 less_is_better #2
    嗯嗯,这个思路逻辑是错的
    回复 有任何疑惑可以回复我~ 2021-06-06 14:11:26
  • 提问者 less_is_better 回复 lewis #3
    好的。多谢老师
    回复 有任何疑惑可以回复我~ 2021-06-06 14:11:47
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号