Valid Parentheses - Java

public class PrintParanthesis {

public static void main(String[] args) {
printParanthesis(3,3,"");
}

private static void printParanthesis(int leftRemain, int rightRemain,
String currentString) {

if(rightRemain==0)
{
System.out.println(currentString);
return;
}
if(leftRemain>0){
printParanthesis(leftRemain-1, rightRemain, currentString+"(");
if(leftRemain < rightRemain)
printParanthesis(leftRemain, rightRemain-1, currentString+")");
}
else
printParanthesis(leftRemain, rightRemain-1, currentString+")");

}

}


Explanation:

pP(2,3,"(")--pP(1,3,"((")--pP(0,3,"(((")--pP(0,2,"((()")--pP(0,1,"((())")--pP(0,0,"((()))") ---> "((()))"
          |                     |
          |                    pP(1,2,"(()")--pP(0,2,"(()(")--pP(0,1,"(()()")--pP(0,0,"(()())") --->"(()())"
          |                                |
          |                                pP(1,1,"(())")--pP(0,1,"(())(")--pP(0,0,"(())()") ---> "(())()"
          |
         pP(2,2,"()")--pP(1,2,"()(")--pP(0,2,"()((")--pP(0,1,"()(()")--pP(0,0,"()(())") ---> "()(())"
                                         |
                                        pP(1,1,""()()")--pP(0,1,"()()(")--pP(0,0,"()()()") ---> "()()()"

Comments

Popular posts from this blog

public vs protected vs default access modifiers - Java

Class, Reference and Object