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:
"((()))", "(()())", "(())()", "()(())", "()()()"
Subscribe to see which companies asked this question
dfs
public class Solution {
private String makeStr ="";
private int amount = 0;
private int count = 0;
public void dfsMake (List<String> ret,int n)
{if(makeStr.length()==2*n){
ret.add(makeStr);
}else{
for(int i=0;i<2;i++){
if(i==0){
if(amount+1<=n){
makeStr+='(';
amount++;
count++;
dfsMake(ret,n);
makeStr= makeStr.substring(0,makeStr.length()-1);
amount--;
count--;
}
}
if(i==1){
if(count>0){
makeStr+=')';
count--;
dfsMake(ret,n);
makeStr= makeStr.substring(0,makeStr.length()-1);
count++;
}
}
}
}
}
public List<String> generateParenthesis(int n) {
List<String> ret = new ArrayList<String> ();
dfsMake(ret,n);
return ret;
}
}