【LeetCode】22.Generate Parentheses

来源:互联网 发布:淘宝旺旺名能改吗 编辑:程序博客网 时间:2024/05/01 01:22

所有题目索引

题目

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:

“((()))”, “(()())”, “(())()”, “()(())”, “()()()”

输出给定数目个括号的全排列

思路

递归解决,以输出的左括号个数一定大于等于右括号个数

代码

java实现

public class Solution {    public List<String> generateParenthesis(int n) {        List<String> ret = new ArrayList<String>();        int l=0,r=0;        String tmp="";        generate(ret,n,l,r,tmp);        return ret;    }    public void generate(List<String> ret,int n,int l,int r,String tmp){        if(l==n){            for(int i=0;i<n-r;i++)            {                tmp+=")";            }            ret.add(tmp);            return;        }        generate(ret,n,l+1,r,tmp+"(");        if(l>r) generate(ret,n,l,r+1,tmp+")");    }}
0 0