返回
JavaScript技巧:理解LeetCode有效括号的巧妙解题法
前端
2023-09-05 04:17:43
LeetCode有效括号简介
LeetCode上有一个名为“有效括号”的问题,要求判断给定字符串中的括号是否有效。有效括号指的是:
- 每个左括号都有一个对应的右括号。
- 每个右括号都有一个对应的左括号。
- 左括号和右括号必须按正确的顺序出现。
例如,以下字符串中的括号是有效的:
()
[]
{}
而以下字符串中的括号是无效的:
([)]
{[]}
(])
JavaScript解决LeetCode有效括号
可以使用JavaScript轻松解决LeetCode上的有效括号问题。一种简单的方法是使用栈数据结构。栈是一种后进先出(LIFO)的数据结构,这意味着最后压入栈中的元素将首先弹出。
我们可以将左括号作为键,将右括号作为值,压入栈中。当遇到左括号时,将它压入栈中,遇到右括号时,检查栈顶元素是否与之匹配。如果匹配,则弹出栈顶元素,否则返回false。
以下是如何使用JavaScript解决LeetCode有效括号问题的示例代码:
function isValid(s) {
//创建一个栈
const stack = [];
//遍历字符串
for (let i = 0; i < s.length; i++) {
//如果遇到左括号,将它压入栈中
if (s[i] === '(' || s[i] === '[' || s[i] === '{') {
stack.push(s[i]);
}
//如果遇到右括号,检查栈顶元素是否与之匹配
else if (s[i] === ')' || s[i] === ']' || s[i] === '}') {
//如果匹配,则弹出栈顶元素
if (s[i] === ')' && stack[stack.length - 1] === '(') {
stack.pop();
} else if (s[i] === ']' && stack[stack.length - 1] === '[') {
stack.pop();
} else if (s[i] === '}' && stack[stack.length - 1] === '{') {
stack.pop();
}
//如果不匹配,则返回false
else {
return false;
}
}
}
//如果栈中还有元素,则返回false
if (stack.length > 0) {
return false;
}
//否则,返回true
return true;
}
结论
使用JavaScript解决LeetCode上的有效括号问题是一种简单而有效的方法。这种方法易于理解和实现,即使是前端开发新手也能轻松掌握。如果您想提高编程技能并挑战自己,不妨尝试使用JavaScript解决LeetCode上的有效括号问题。