For example, with elements a,b,c,d, there are 5 possible ways to take neighboring elements and reduce them into a single element, where exactly two elements mus
import java.util.ArrayList;
public class Parantheses {
private ArrayList parStringList;
private int total;
public void exploreParantheses(String parString,int leftCnt,int rightCnt)
{
if (leftCnt < total)
{
exploreParantheses(parString + "(", leftCnt+1, rightCnt);
}
if ((rightCnt < total) &&(rightCnt < leftCnt))
{
exploreParantheses(parString + ")", leftCnt, rightCnt+1);
}
else if (rightCnt == total)
{
parStringList.add(parString);
}
}
public ArrayList generateParanthesis(int numPars)
{
this.total = numPars;
this.parStringList = new ArrayList();
exploreParantheses("", 0, 0);
return this.parStringList;
}
public static void main(String args[])
{
ArrayList par;
par = (new Parantheses()).generateParanthesis(6);
for (String str: par)
System.out.println(str);
}
}