LeetCode 022 Generate Parentheses

来源:互联网 发布:caxa工程师编程实例 编辑:程序博客网 时间:2024/05/17 22:25

题目描述

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:

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

代码

    public List<String> generateParenthesis(int n) {        if (n <= 0) {            return new ArrayList<String>();        }        ArrayList<String> result = new ArrayList<String>();        dfs(result, "", n, n);        return result;    }    void dfs(ArrayList<String> result, String s, int left, int right) {        if (left > right) {            return;        }        if (left == 0 && right == 0) {            result.add(s);        }        if (left > 0) {            dfs(result, s + "(", left - 1, right);        }        if (right > 0) {            dfs(result, s + ")", left, right - 1);        }    }
1 0