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