-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStringInterleave.java
52 lines (43 loc) · 1.06 KB
/
StringInterleave.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package dummy;
import java.util.Scanner;
public class StringInterleave {
public StringInterleave() {
// TODO Auto-generated constructor stub
}
private static String a,b;
private static int la,lb,lt;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
int t=s.nextInt();
while(t--!=0) {
a=s.next(); b=s.next();
la=a.length(); lb=b.length(); lt=la+lb;
char[] ans=new char[lt];
int[] fill=new int[lt];
for(int i=0; i<fill.length; ++i) fill[i]=0;
Rec(0, fill, ans);
}
}
public static void Rec(int cur, int fill[], char ans[]) {
if(cur==la) {
for(int i=0, j=0; i<lt; ++i) {
if(fill[i]==0) {
ans[i]=b.charAt(j++);
}
}
for(char cc:ans)
System.out.print(cc);
System.out.print("\n");
return;
}
int pos = 0;
for(int i=lt-1; i>=0 && fill[i]==0; i--,pos=i+1);
for(int i=pos; i+la-cur<=lt; i++) {
fill[i]=1; ans[i]=a.charAt(cur);
Rec(cur+1, fill, ans);
fill[i]=0;
}
return;
}
}