关闭

Generate Parentheses

标签: 括号匹配
133人阅读 评论(0) 收藏 举报
分类:

题目描述

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+")");
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39775次
    • 积分:1840
    • 等级:
    • 排名:千里之外
    • 原创:148篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    博客专栏
    最新评论