/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
if (s.length == 0) {
return true;
}
let stack = [];
// 左右括号对照表
let obj = {
")": "(",
"]": "[",
"}": "{"
};
// 遍历字符串
for (let i = 0; i < s.length; i++) {
const current = s[i];
// 如果 current 等于三个左括号中的一种,直接压入栈中
if (current === "(" || current === "[" || current === "{") {
stack.push(current);
} else if (obj[current] != stack.pop()) {
// 如果 current 等于三个右括号中的一种,则从对照表中,取出对应的左括号
// 并且与栈中最后一个元素进行配对,配对失败说明不是有效的括号
return false;
}
}
return stack.length === 0; // 最后的栈必须为空才能是有效括号
};