Saturday, March 20, 2021

Generate Parentheses

 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.


Example 1:

Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]

Example 2:

Input: n = 1
Output: ["()"]
Solution:

 public List<String> generateParenthesis(int n) {

        List<String> ans = new ArrayList();

        backtrack(ans, "", 0, 0, n);

        return ans;

    }


    public void backtrack(List<String> ans, String cur, int open, int close, int max) {

        if (cur.length() == max * 2) {

            ans.add(cur);

            return;

        }

        if (open < max)

            backtrack(ans, cur+"(", open+1, close, max);

        if (close < open)

            backtrack(ans, cur+")", open, close+1, max);

    }

No comments:

Post a Comment