printParent
by Paco86
JavaScript
function printParent(n, result = new Set()){
if(n <= 0 ){
return '';
}else if(n === 1){
result = ['()']
return result;
}
let subResults = printParent(n-1);
subResults.forEach(function(subResult){
for(let i = 0; i < subResult.length; i++){
if(subResult.charAt(i) === '('){
result.add(subResult.substring(0, i + 1) + '()' + subResult.substring(i + 1));
}
}
result.add('()' + subResult);
})
return result;
}
function printParent2(leftRem, rightRem = leftRem, result=[], arr=[], index=0){
if(leftRem < 0 || leftRem > rightRem){
return;
}
if(leftRem === 0 && rightRem === 0){
result.push(arr.join().replace(/,/g,''));
}else{
arr[index] = '(';
console.log(arr + '-----left---' + index);
printParent2(leftRem-1, rightRem, result, arr, index+1);
arr[index] = ')';
console.log(arr + '-----right---' + index);
printParent2(leftRem, rightRem-1, result, arr, index+1);
}
return result;
}
console.log(printParent2(2));