给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
function isValid(s: string): boolean {
    const slack = []
    const char_arr = Array.from(s)
    for(const s of char_arr){
        if(slack.length === 0) {
            slack.push(s)
            continue
        }else{
            const top = slack.pop()
        if(top){
            if(top === '(' && s ===')') continue
            else if(top === '{' && s ==='}') continue
            else if(top === '[' && s ===']') continue
            else {
                slack.push(top,s)
            }
        }
        }
        
    }
    return slack.length === 0
};

AI

function isValid(s: string): boolean {
    const stack: string[] = [];
    const map: Record<string, string> = {
        ')': '(',
        '}': '{',
        ']': '['
    };
 
    for (const char of s) {
        // 如果是右括号
        if (map[char]) {
            // 弹出栈顶元素进行匹配
            const top = stack.pop();
            if (top !== map[char]) return false;
        } else {
            // 如果是左括号,直接入栈
            stack.push(char);
        }
    }
 
    // 栈为空则代表全部匹配
    return stack.length === 0;
}