返回
用 JavaScript 排除万难,征服 LeetCode 第 5 天 | 有效的括号
前端
2023-11-25 09:44:01
开篇
踏入 LeetCode 探索之旅的第五天,你将邂逅一道备受欢迎的经典题——括号验证。这项挑战要求你利用 JavaScript 的强大功能,判断一个仅包含括号字符的字符串是否有效。这不仅考验你的编程技巧,更对你的算法思维提出挑战。准备好了吗?让我们携手开始吧!
算法之旅
面对这一难题,你将接触到一种名为「栈」的数据结构。栈是一种先进后出的数据结构,你可以想象成一个垂直的弹簧,先放进去的东西会先出来。我们将栈用于存储括号字符,每遇到一个左括号,我们就将其压入栈中,每遇到一个右括号,我们就将栈顶元素弹出。若弹出元素与右括号匹配,则说明括号有效,否则无效。
代码详解
为了帮助你更加直观地理解算法实现,我们准备了以下代码:
const isValid = (s) => {
if (s === null || s.length % 2 !== 0) {
return false;
}
const stack = [];
const leftBrackets = ["(", "{", "["];
const rightBrackets = [")", "}", "]"];
for (let char of s) {
if (leftBrackets.includes(char)) {
stack.push(char);
} else if (rightBrackets.includes(char)) {
const top = stack.pop();
if (leftBrackets.indexOf(top) !== rightBrackets.indexOf(char)) {
return false;
}
}
}
return stack.length === 0;
};
示例探究
为了让你更加真切地感受到算法的实际应用,我们准备了以下示例:
-
输入:
"(())"
输出:
true
解析:括号序列中,每个左括号都有对应的右括号,因此该括号序列有效。
-
输入:
"()[]{}"
输出:
true
解析:括号序列中,每个左括号都有对应的右括号,且左右括号匹配,因此该括号序列有效。
-
输入:
"{[()]}}"
输出:
false
解析:括号序列中,右括号
"}"
在左括号"
之前出现,因此该括号序列无效。
结语
在本次 LeetCode 之旅中,你学会了如何用 JavaScript 判断括号序列是否有效。我们用栈的数据结构和清晰的代码实现,一步步带你攻克这一挑战。希望你能够从中收获满满,继续探索 LeetCode 的精彩世界!