[Leetcode] 22. Generate Parentheses

来源:互联网 发布:南京淘宝兼职模特招聘 编辑:程序博客网 时间:2024/04/30 21:57

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:

"((()))", "(()())", "(())()", "()(())", "()()()"

这道题很典型的回溯,值得注意的是,在helper里写new StringBuffer()就不行,写“”就可以。

import java.util.ArrayList;public class Solution {    public ArrayList<String> generateParenthesis(int n) {        ArrayList<String> result = new ArrayList<String>();        if(n <= 0) return result;        helper(result, n, n, "");        return result;    }    private void helper(ArrayList<String> result, int leftRemain, int rightRemain, String s){        if(leftRemain == 0 && rightRemain == 0){            result.add(s);        }        if(leftRemain > rightRemain || leftRemain < 0 || rightRemain < 0){            return;        }        helper(result, leftRemain - 1, rightRemain, s + "(");        helper(result, leftRemain, rightRemain - 1, s + ")");    }}


0 0
原创粉丝点击