# 有效的括号
给定一个只包括'(',
')',
'{',
'}',
'[',
']'的字符串
s,判断字符是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
# 📑 思想:
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
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
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