Day3-有效的括号

YVTU

🔗 LeetCode 20 - Valid Parentheses

📌 题目描述

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 空字符串也为有效字符串。

💡 解题思路

  • 使用栈结构来处理括号匹配;
  • 遇到左括号就入栈,遇到右括号时判断是否和栈顶配对;
  • 若匹配,则弹出栈顶;否则直接返回 false;
  • 最后栈为空,则为合法字符串。

✅ JavaScript 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var isValid = function (s) {
const stack = [];
const map = {
')': '(',
'}': '{',
']': '['
};
for (let char of s) {
if (['(', '{', '['].includes(char)) {
stack.push(char);
} else {
if (stack.pop() !== map[char]) {
return false;
}
}
}
return stack.length === 0;
};

🧠 思考拓展