判断括号是否合法
// 巧妙解法
function isValidate(str) {
let stackArr = [];
// 主要就是巧妙在这里,使用了一个用*右*半块括号做键的对象
let tempObj = {
')': '(',
']': '[',
'}': '{'
}
for (let s of str) {
if (!tempObj[s]) {
stackArr.push(s)
} else {
// 判断栈顶的元素stackArr.pop(),是否是跟s配套的那个元素tempObj[s]
if (!stackArr.length || tempObj[s] !== stackArr.pop()) {
return false
}
}
}
return stackArr.length === 0;
}
// 另一个比较野路子的解法(性能不如上面的经典解法)
function isValidate(str) {
let len
do {
len = str.length;
str.replace('()', '').replace('[]', '').replace('{}', '');
} while (len !== str.length)
return len === 0;
}