背景
我正在学习Udemy上的一门课程,该课程涵盖了所有ES6功能。在其中一节课中,讲师谈到使用reduce辅助方法来解决流行的平衡括号面试问题。
我可以不用reduce方法解决这个问题。虽然使用reduce方法可以用更少的代码完成任务。我曾经在面试中被要求找到括号的深度,并想知道是否可以使用reduce在同一个方法中完成所有操作。
我不知道为什么这个问题会让我如此困惑,但我想学习。
问题
我已经尝试了一段时间,可能是因为我不理解reduce的工作原理。
示例
这个示例使用reduce方法返回关于括号是否均匀开放和关闭的true或false。
function balanceParens(string) {
return !string.split("").reduce((counter, char) => {
// Handle if parens open and close out of order
if (counter < 0) { return counter; }
// Add 1 for each open in order
if (char === "(") { return ++counter; }
// subtract 1 for each close in order
if (char === ")") { return --counter; }
// handle use case if char is not a paren
return counter;
}, 0);
}
console.log(balanceParens("((()))"));
问题
如何使用reduce辅助方法返回括号的最大深度。
reduce
,你会如何解决这个问题?如果你能够发布你的循环代码,我们可以帮助你将其转换为reduce
。 - Bergi.reduce()
模式的内容,但需要多个值,则可以将对象用作reduce的目标。 - Pointy