Generate Parentheses

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

Example 1:

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

Approach

Java


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class GenerateParentheses {
    public static void main(String[] args) {
        int n = 3;
        res = new ArrayList<String>();
        List<Stringparen = generateParenthesis(n);
        System.out.println(Arrays.asList(paren));
    }

    static List<Stringres;

    static List<StringgenerateParenthesis(int n) {

        generate(""00, n);
        return res;
    }

    static void generate(String curint openint closeint max1) {
        if (cur.length() == max1 * 2) {
            res.add(cur);
            return;
        }

        // if open is less
        if (open < max1)
            generate(cur + "(", open + 1, close, max1);

        // if close is less
        if (close < open)
            generate(cur + ")", open, close + 1, max1);
    }

}

C++

#include <bits/stdc++.h>
using namespace std;

void generate(vector<string&res,string cur,int open,
   int close,int max1
        if(cur.length()== max1*2)  
           { 
                 res.push_back(cur); 
                 return;
           }
        
        //if open is less
         if (open < max1)
            generate(rescur+"("open+1closemax1);
        
        //if close is less
        if (close < open)
            generate(rescur+")"openclose+1max1); 

vector<stringgenerateParenthesis(int n
{
        vector<stringres;
        generate(res,"",0,0,n);
        return res;
}
int main()
{
    int n=3;
    vector<stringparengenerateParenthesis(n);
    cout<<"[";
    for(int i=0;i<paren.size()-1;i++)
      cout<<paren[i]<<",";
    cout<<paren[paren.size()-1]<<"]";
   return 0;

}


No comments:

Post a Comment