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,"()()()") ---> "()()()"
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
Post a Comment