# 问
给定一个只包括' ( '、' ) '、' { '、' } '、' [ '、' ] ' 的字符串,判断字符串是否有效。 什么是有效字符串:
- 左右括号必须类型相同才能闭合。
- 括号必须以正确的顺序进行闭合。
"()[]{}" => true
"([)]" => false
"{[]}" => true
1
2
3
2
3
# 答
# 思路1:利用栈结构来管理字符串
var isValid = function (s) {
let stack = []
let obj = {
"[": "]",
"(": ")",
"{": "}",
};
for(var i = 0; i < s.length; i++) {
const ele = s[i]
// 左括号入栈
if(ele in obj) {
stack.push(ele)
}else {
// 出栈跟右括号比较
if(ele !== obj[stack.pop()]) {
return false
}
}
}
// 遍历结束后,如果有效,栈应该就是空的。
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22