leetcode_41有效的括号

2020-08-14  本文已影响0人  看到这朵小fa了么

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

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 }
};
上一篇下一篇

猜你喜欢

热点阅读