Skip to content

Commit ff22ed2

Browse files
Recursion Day 11 is Completed
1 parent 5fe7aa5 commit ff22ed2

2 files changed

Lines changed: 58 additions & 7 deletions

File tree

Recursion/LetterCombination.java

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,51 @@
11
package Recursion;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
36
public class LetterCombination {
47

5-
private static void pad(String str,String ans) {
6-
if(str.length()==0) {
8+
private static void pad(String str, String ans) {
9+
if (str.length() == 0) {
710
System.out.println(ans);
811
return;
912
}
10-
13+
14+
int digit = str.charAt(0) - '0';
15+
for (int i = (digit - 1) * 3; i < (digit * 3); i++) {
16+
char ch = (char) ('a' + i);
17+
pad(str.substring(1), ans + ch);
18+
}
19+
}
20+
21+
static List<String> padleetcode(String str, String ans) {
22+
23+
if (str.length() == 0) {
24+
ArrayList<String> list = new ArrayList<>();
25+
list.add(ans);
26+
return list;
27+
}
1128
int digit = str.charAt(0) - '0';
12-
for(int i = (digit-1)*3;i<(digit*3);i++) {
13-
char ch = (char) ('a'+i);
14-
pad(str.substring(1), ans+ch);
29+
ArrayList<String> mainlist = new ArrayList<>();
30+
int s = (digit - 2) * 3, e = ((digit - 1) * 3);
31+
if (digit == 7)
32+
e += 1;
33+
else if (digit == 8) {
34+
s += 1;
35+
e += 1;
36+
} else if (digit == 9) {
37+
s += 1;
38+
e += 2;
1539
}
40+
for (int i = s; i < e; i++) {
41+
char ch = (char) ('a' + i);
42+
mainlist.addAll(padleetcode(str.substring(1), ans + ch));
43+
}
44+
return mainlist;
1645
}
46+
1747
public static void main(String[] args) {
18-
pad("12", "");
48+
pad("18", ""); // 1-8 (9-yz)
49+
System.out.println(padleetcode("29", "")); // 2-9 (7 - pqrs, 8 - tuv, 9 - wxyz)
1950
}
2051
}

Recursion/Permutations.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package Recursion;
22

33
import java.util.ArrayList;
4+
import java.util.List;
45

56
public class Permutations {
67

@@ -49,11 +50,30 @@ private static int permutationCount(String str,String ans) {
4950
return count;
5051
}
5152

53+
// Array Permutation
54+
static void permutationArray(int[] nums,List<List<Integer>> list,List<Integer> ans,int index) {
55+
if(index == nums.length){
56+
list.add(ans);
57+
return;
58+
}
59+
for(int i = 0;i<=ans.size();i++){
60+
List<Integer> temp = new ArrayList<>(ans) ;
61+
temp.add(i,nums[index]);
62+
permutationArray(nums,list,temp,index+1);
63+
}
64+
}
65+
public static List<List<Integer>> Arraypermute(int[] nums) {
66+
List<List<Integer>> list = new ArrayList<>();
67+
permutationArray(nums,list,new ArrayList<Integer>(),0);
68+
return list;
69+
}
70+
5271
public static void main(String[] args) {
5372
String str = "abc";
5473
permutation(str,"");
5574
System.out.println(permutationArrayList(str,""));
5675
System.out.println(permutationCount("abcd",""));
76+
System.out.println(Arraypermute(new int[] {1,2,3}));
5777

5878
}
5979
}

0 commit comments

Comments
 (0)