image.png
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if(s.length === 0) return true
if(s.length === 1) return false
let obj = {
'(':')',
'[': ']',
'{': '}'
}
let stack = []
let arr = s.split('')
for(let i = 0; i< arr.length; i++) {
console.log(arr[i],'arr[i]')
if(obj[arr[i]]) {
stack.push(obj[arr[i]])
}else {
if(stack.pop() !== arr[i]) {
console.log(1234,stack.pop(),arr[i])
return false
}
}
}
console.log(stack.length)
return stack.length === 0
};
思路
- 想出所有不符合的可能性
- 写一个映射对象 左括号=>右括号
- 定义一个栈结构
- 循环字符串,然后如果是左括号入栈,右括号的话与出栈的元素比较,如果不相等return false