gpt4 book ai didi

javascript - n对括号的所有有效组合

转载 作者:行者123 更新时间:2023-11-30 08:38:22 24 4
gpt4 key购买 nike

我正在尝试编写一个 js 程序来打印 n 对括号的所有有效组合,例如:

(), (()()),(())

你能告诉我这是否正确吗?

https://jsfiddle.net/e7mcp6xb/

module.exports = Parentheses = (function() {
var _isParenthesesMatch = function(str) {
var parentheses = str.length;
var rightParentheses = '(';
var leftParentheses = ')';
var rightCount = 0;
var leftCount = 0;

for(i=0;i<=str.length;i++){
if(rightParentheses == str.charAt(i))
{
rightCount++;
}
else if(leftParentheses == str.charAt(i))
{
leftCount++;
}
}

if(rightCount == leftCount){
return true;
}
else(rightCount != leftCount){
return false;
}

}

}());

最佳答案

检查错误,但您可以轻松修复:在 for 循环的每一步中,左括号的数量不能小于右括号的数量:

if (rightCount < leftCount)
return false;

整个函数应该是这样的:

function(str) {
var rightParentheses = '(';
var leftParentheses = ')';
var rightCount = 0;
var leftCount = 0;

for (var i = 0; i <= str.length; i++) {
if (rightParentheses == str.charAt(i))
rightCount++;
else if (leftParentheses == str.charAt(i))
leftCount++;

if (rightCount < leftCount)
return false;
}

return rightCount == leftCount;
}

如果你想生成所有有效的字符串,你可以使用这个函数:

function nPair(n) {
if (n == 0)
return [""];

var result = [];
for (var i = 0; i < n; ++i) {

var lefts = nPair(i);
var rights = nPair(n - i - 1);

for (var l = 0; l < lefts.length; ++l)
for (var r = 0; r < rights.length; ++r)
result.push("(" + lefts[l] + ")" + rights[r]);
}

return result;
}

// result of nPair(3):
// ["()()()", "()(())", "(())()", "(()())", "((()))"]

关于javascript - n对括号的所有有效组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com