leetcode 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:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

中文理解:

给定一个数字,代表括号的对数,然后返回能够组成的括号符合消去原则的,即就近消去,最后刚刚好全部消除。

解题思路:

使用递归,当括号组成的字符等于对数*2时返回,当括号正面数小于对数时,加入"("并递归,若括号正面数大于括号反面数,则加入")"并递归。

代码(java):

class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> res=new ArrayList<String>();
        int open=0,close=0,max=n;
        generateParenthesisHelp(res,"",open,close,max);
        return res;
    }
    public void generateParenthesisHelp(List<String> res,String element,int open,int close,int max){
        if(element.length()==max*2){
            res.add(element);
            return;
        }
        if(open<max){
            generateParenthesisHelp(res,element+"(",open+1,close,max);
        }
        if(open>close){
            generateParenthesisHelp(res,element+")",open,close+1,max);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/leo_weile/article/details/90019419