SOURCE

/*给定一个只包括 '(', ')', '{', '}', '[', ']'的字符串 s,
判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合,且左括号必须以正确的顺序闭合*/

var isValid = function(s) {
    // 如果字符串长度为奇数,直接返回false
    if (s.length % 2 !== 0) {
        return false;
    }
    
    // 使用数组作为栈
    const stack = [];
    
    // 遍历字符串中的每一个字符
    for (let i = 0; i < s.length; i++) {
        const char = s[i];
        
        // 如果是左括号,则将其对应的右括号压入栈中
        if (char === '(') {
            stack.push(')');
        } else if (char === '[') {
            stack.push(']');
        } else if (char === '{') {
            stack.push('}');
        } else {
            // 如果是右括号,检查栈顶元素是否与之匹配
            // 如果栈为空或栈顶元素不匹配,则返回false
            if (stack.length === 0 || stack.pop() !== char) {
                return false;
            }
        }
    }
    
    // 最后,栈必须为空才算有效
    return stack.length === 0;
};

console.log(isValid("((({}[])))"));   // true
console.log(isValid("()[]{}"));  // true
console.log(isValid("(]"));      // false
console.log(isValid("([)]"));    // false

console 命令行工具 X clear

                    
>
console