-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMorseCodeConverter.java
More file actions
96 lines (87 loc) · 3.44 KB
/
Copy pathMorseCodeConverter.java
File metadata and controls
96 lines (87 loc) · 3.44 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import java.util.HashMap;
import java.util.Map;
public final class MorseCodeConverter {
private static final Map<Character, String> MORSE_DICTION = new HashMap<>();
private static final Map<String, Character> REVERSE_DICTION = new HashMap<>();
static {
MORSE_DICTION.put('A', ".-");
MORSE_DICTION.put('B', "-...");
MORSE_DICTION.put('C', "-.-.");
MORSE_DICTION.put('D', "-..");
MORSE_DICTION.put('E', ".");
MORSE_DICTION.put('F', "..-.");
MORSE_DICTION.put('G', "--.");
MORSE_DICTION.put('H', "....");
MORSE_DICTION.put('I', "..");
MORSE_DICTION.put('J', ".---");
MORSE_DICTION.put('K', "-.-");
MORSE_DICTION.put('L', ".-..");
MORSE_DICTION.put('M', "--");
MORSE_DICTION.put('N', "-.");
MORSE_DICTION.put('O', "---");
MORSE_DICTION.put('P', ".--.");
MORSE_DICTION.put('Q', "--.-");
MORSE_DICTION.put('R', ".-.");
MORSE_DICTION.put('S', "...");
MORSE_DICTION.put('T', "-");
MORSE_DICTION.put('U', "..-");
MORSE_DICTION.put('V', "...-");
MORSE_DICTION.put('W', ".--");
MORSE_DICTION.put('X', "-..-");
MORSE_DICTION.put('Y', "-.--");
MORSE_DICTION.put('0', "-----");
MORSE_DICTION.put('1', ".----");
MORSE_DICTION.put('2', "..---");
MORSE_DICTION.put('3', "...--");
MORSE_DICTION.put('4', "....-");
MORSE_DICTION.put('5', ".....");
MORSE_DICTION.put('6', "-....");
MORSE_DICTION.put('7', "--...");
MORSE_DICTION.put('8', "---..");
MORSE_DICTION.put('9', "----.");
MORSE_DICTION.put('.', ".-.-.-");
MORSE_DICTION.put(',', "--..--");
MORSE_DICTION.put('?', "..--..");
MORSE_DICTION.put('!', "-.-.--");
MORSE_DICTION.put('/', "-..-.");
MORSE_DICTION.put('(', "-.--.");
MORSE_DICTION.put(')', "-.--.-");
MORSE_DICTION.put('@', ".--.-.");
MORSE_DICTION.put('&', ".-...");
MORSE_DICTION.put(':', "---...");
MORSE_DICTION.put(';', "-.-.-.");
MORSE_DICTION.put('=', "-...-");
MORSE_DICTION.put('+', ".-.-.");
MORSE_DICTION.put('_', "..--.-");
MORSE_DICTION.put('"', ".-..-.");
MORSE_DICTION.put('$', "...-..-");
MORSE_DICTION.forEach((key, value) -> REVERSE_DICTION.put(value, key));
}
public static String textToMorse(String text) {
StringBuilder morse = new StringBuilder();
String[] words = text.toUpperCase().split(" ");
for (int i = 0; i < words.length; i++) {
for (char w : words[i].toCharArray()) {
morse.append(MORSE_DICTION.getOrDefault(w, "")).append(" ");
}
if (i < words.length - 1) {
morse.append(" | ");
}
}
String result =morse.toString().trim();
return result;
}
public static String morseToText(String morse) {
StringBuilder text = new StringBuilder();
String[] words = morse.split(" \\| ");
for (int i = 0; i < words.length; i++) {
for (String code : words[i].split(" ")) {
text.append(REVERSE_DICTION.getOrDefault(code, '?'));
}
if (i < words.length - 1) {
text.append(" ");
}
}
return text.toString();
}
}