Orion's Studio.

算法(41)-有效的括号

2024/03/16

题目(easy)

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

思路

匹配类的题目非常适合用栈。

出问题的场景:

  • 最后栈不为空,说明左括号多了
  • 中途不匹配,说明左右括号不一致
  • 栈空了还没匹配完,说明右括号多了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const isValid = (s) => {
const stack = [];
const map = {
"(":")",
"{":"}",
"[":"]",
};
for(const x of s) {
if (x in map) {
stack.push(map[x]);
continue;
}
if (stack.pop() !== x) {
return false;
}
}
return !stack.length;
}
CATALOG
  1. 1. 题目(easy)
  2. 2. 思路