Skip to content

Commit ae3fc47

Browse files
committed
added PhoneNumberMnemonics
1 parent f563017 commit ae3fc47

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package chapter9;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.Map;
6+
import java.util.Scanner;
7+
8+
public class PhoneNumberMnemonics {
9+
Map<Character, String[]> phoneMapping = Map.of(
10+
'1', new String[] { "1" },
11+
'2', new String[] { "a", "b", "c" },
12+
'3', new String[] { "d", "e", "f" },
13+
'4', new String[] { "g", "h", "i" },
14+
'5', new String[] { "j", "k", "l" },
15+
'6', new String[] { "m", "n", "o" },
16+
'7', new String[] { "p", "q", "r", "s" },
17+
'8', new String[] { "t", "u", "v" },
18+
'9', new String[] { "w", "x", "y", "z" },
19+
'0', new String[] { "0", });
20+
private final String phoneNumber;
21+
22+
public PhoneNumberMnemonics(String phoneNumber) {
23+
this.phoneNumber = phoneNumber;
24+
}
25+
26+
public static String[] cartesianProduct(String[] first, String[] second) {
27+
ArrayList<String> product = new ArrayList<>(first.length * second.length);
28+
for (String item1 : first) {
29+
for (String item2 : second) {
30+
product.add(item1 + item2);
31+
}
32+
}
33+
return product.toArray(String[]::new);
34+
}
35+
36+
public String[] getMnemonics() {
37+
String[] mnemonics = { "" };
38+
for (Character digit : phoneNumber.toCharArray()) {
39+
String[] combo = phoneMapping.get(digit);
40+
if (combo != null) {
41+
mnemonics = cartesianProduct(mnemonics, combo);
42+
}
43+
}
44+
return mnemonics;
45+
}
46+
47+
public static void main(String[] args) {
48+
System.out.println("Enter a phone number:");
49+
Scanner scanner = new Scanner(System.in);
50+
String phoneNumber = scanner.nextLine();
51+
scanner.close();
52+
System.out.println("The possible mnemonics are:");
53+
PhoneNumberMnemonics pnm = new PhoneNumberMnemonics(phoneNumber);
54+
System.out.println(Arrays.toString(pnm.getMnemonics()));
55+
}
56+
57+
}

0 commit comments

Comments
 (0)