Generate Parentheses

题目描述

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
“((()))”, “(()())”, “(())()”, “()(())”, “()()()”

题目解答

解题思路

这是一个递归问题,要找到递归的规律, n个”(” ,n 个”)”分配
当left > 0时,填写”(”
当right > left时, 填写”)”

代码实现

public class Solution {

    /**
     * n个左括号 , n个右括号
     * 先放置左括号,然后再放置右括号
     * 递归的解决
     */
    public List<String> generateParenthesis(int n){

        List<String> ret = new ArrayList<>();
        parenthesesByRegression(ret, n, n, "");
        return ret;
    }

    public void parenthesesByRegression(List<String> ret, int left, int right, String temp){

        if(left == 0 && right ==0)
            ret.add(temp);
        if(left > 0)
            parenthesesByRegression(ret, left-1, right, temp+"(");
        if(right > left)
            parenthesesByRegression(ret, left, right-1, temp+")");
    }
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangxishidayuan/article/details/49926421
文章标签: 括号匹配
个人分类: 算法和刷题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Generate Parentheses

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭