当前位置:网站首页>22、生成括号

22、生成括号

2022-06-11 05:08:00 qq_26391203

在这里插入图片描述

/* * 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 * 有效的括号: * 输入:n = 3 * 输出:["((()))","(()())","(())()","()(())","()()()"] * 输入:n = 1 * 输出:["()"] * * * 从模拟的过程: * 首先串为空,既可以添加(、也可以添加) * 什么时候迭代添加结束,即str的长度为2n,或者无效时; * 什么时候无效? 即左括号的个数比右括号少,其他情况都可以继续迭代 * 继续迭代时,时候时候可以加(,什么时候可以加) * (的个数和n相关,)的个数和左括号的个数相关,应该满足:r<=l<=n,=>l<n,r<l是迭代的基础 * * 难点:抽象出左右括号的关系,和迭代的基础 * */
var generateParenthesis = function(n) {
    
    var result = [],l=0,r=0,str='';
    back_tracking(n,result,l,r,str);
    return result;
};
var back_tracking=function(n,result,l,r,str){
    
    if(l<r){
    
        return;
    }
    if(str.length===2*n){
    
        result.push(str);
        return;
    }
    if(l<n){
    
        back_tracking(n,result,l+1,r,str+'(');
    }
    if(l>=r){
    
        back_tracking(n,result,l,r+1,str+')');
    }

}
console.log(generateParenthesis(1))
原网站

版权声明
本文为[qq_26391203]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_26391203/article/details/124936830