# 有效的括号

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

image-20210903104418690

# 📑 思想:

1.有效括号字符串的长度,一定是偶数;

2.右括号前面,必须是相对于的左括号,才能抵消;

3.右括号前面,不是对应的左括号,那么该字符串,一定不是有效的括号;

var isValid = function(s) {
 	// 切割字符串
    s = s.split('');
    let sl = s.length;
    // 设置边界条件
    if(sl % 2) return false;
    // 把所有括号存放到map中
    let map = new Map([[')','('],['}','{'],[']','[']]);
    // 空数组,用于入栈
    let stack = [];
    for(let i of s){
        // 如果map中找到了这个括号
        if(map.get(i)){
            // 如果这个括号不在栈中,返回false
            if(stack[stack.length-1] !== map.get(i)) return false;
            // 否则弹出该括号
            else stack.pop();
        }else{
        // map中找不到则推入进栈 
            stack.push(i)
        }
    }
    return !stack.length;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var isValid = function (s) {
    let vaild = true
    const mapper = {
        "(": ")",
        "{": "}",
        "[": "]",
    }
    let stack = []
    for (let i in s) {
        const v = s[i]
        if (['(', "[", "{"].indexOf(v) !== -1) {
            stack.push(v)
        } else {
            const r = stack.pop()
            if (v !== mapper[r]) {
                return false
            }
        }
    }

    if (stack.length > 0) {
        return false
    }
    return vaild

};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
最后更新时间: 6/20/2022, 10:48:50 PM