美文网首页
leetcode_41有效的括号

leetcode_41有效的括号

作者: 看到这朵小fa了么 | 来源:发表于2020-08-14 14:36 被阅读0次

    判断字符串中的括号是否均可以闭合,本次的思路是,从左往右循环查找右括号,遇到右括号则进行对应的闭合(这时意味着在该右括号前一位就是与之对应的左括号,否则关闭失败),将匹配成功的一对括号弹出,索引指向前继续遍历,直到结束,如果处理完毕后所有字符都被匹配成功,则表示该字符串有效

    var isValid = function(s) {
        let length = s.length-1
        let list = s.split('')
        for(let i=0; i<=length; i++) {
            if(list[i] === ')' || list[i] === ']' || list[i] === '}') {
               if((list[i-1] === '(' && list[i] === ')') || (list[i-1] === '{' && list[i] === '}') || (list[i-1] === '[' && list[i] === ']')) {
                    list.splice(i-1, 2)
                    i = i-3
                } else return false  
            }
        }
        if(list.length<1) return true
        else return false
    };
    

    之前写的一种实现

    将括号的闭合关系进行一个映射,遍历整个字符串,通过将左括号进行存储,遇到右括号则进行关闭弹出,最终存储的空间为空则认为该字符串有效

    var isValid = function(s) {
        let list = s.split('')
        if(s.length == 0) return true
        let left = [list[0]]
        let relation = {
            "(":")",
            "{":"}",
            "[":"]",
            ")":"(",
            "]":"[",
            "}":"{"
        }
        for(let i = 1 ;i<list.length; i++) {
            if(left[left.length-1] === relation[list[i]]) {
                left.pop()
            } else {
                left.push(list[i])
            }
        }
        if(left.length < 1) {return true}
        else { return false }
    };
    

    相关文章

      网友评论

          本文标题:leetcode_41有效的括号

          本文链接:https://www.haomeiwen.com/subject/pemgdktx.html