package com.interview.recursion; public class StringInterleaving { private void printArray(char[] str){ for(int i=0; i < str.length; i++){ System.out.print(str[i]); } System.out.println(); } public void interleaving(char[] str1,char[] str2,int len1,int len2,int current, char []result){ if(current == result.length){ printArray(result); return; } if(len1 < str1.length){ result[current] = str1[len1]; interleaving(str1, str2, len1+1, len2, current+1, result); } if(len2 < str2.length){ result[current] = str2[len2]; interleaving(str1,str2,len1,len2+1,current+1,result); } } public static void main(String args[]){ StringInterleaving si = new StringInterleaving(); String str1 ="AB"; String str2 = "CDE"; char[] result = new char[str1.length() + str2.length()]; si.interleaving(str1.toCharArray(), str2.toCharArray(), 0, 0, 0, result); } }