题目:
答案:
function isValid(n) {
let items = []
let length = n.length
if (length % 2 !== 0) {
return false
}
// 利用栈先入后出的逻辑,如果遍历完之后,数组清空,则符合规则
for(let i = 0; i < length; i++) {
let letter = items[items.length - 1]
switch(n[i]) {
case '(':
items.push('(')
break
case '[':
items.push('[')
break
case '{':
items.push('{')
break
case ')':
if (letter === '(') {
items.pop()
}
break
case '}':
if (letter === '{') {
items.pop()
}
break
case ']':
if (letter === '[') {
items.pop()
}
break
}
}
if (items.length === 0) {
return true
} else {
return false
}
}
console.log(isValid('[{}]')) // true
console.log(isValid('()')) // true
console.log(isValid('()[]{}')) // true
console.log(isValid('[{')) // false
console.log(isValid('([)]')) // false