leetcode题目 22. 括号生成

题目

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

示例

输入:n = 3
输出:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]

大体思路

在这里插入图片描述
图片来源于网络

代码

	public List<String> generateParenthesis(int n) {
		//结果集
        List<String> re=new ArrayList<String>();
        
        //n为0直接返回
        if(n==0) return re;
        
        //加入初始字符串
        AddBracket(re, "", n, n);
        
        
        return re;
    }
	
	//re是结果集,a是左括号剩余个数,b是右括号剩余个数
	public void AddBracket(List<String> re,String str,int a,int b){
		if(a==0 && b==0){
			re.add(str);
			return;
		}
		
		if(a>b){
			return;
		}
		
		if(a>0){
			AddBracket(re, str+"(", a-1, b);
		}
		
		if(b>0){
			AddBracket(re, str+")", a, b-1);
		}
	}
发布了15 篇原创文章 · 获赞 0 · 访问量 183

猜你喜欢

转载自blog.csdn.net/qq_36360463/article/details/103978066