Java Program to Convert English Text to Morse Code and Vice-Versa - GeeksforGeeks

10 May, 2021
Morse code is a method used in telecommunication to encode text characters as standardized sequences of two different signal durations, called dots and dashes. Morse Code defines a standard encoding where each letter is mapped to a series of dots and dashes, as follows: “a” maps to “.-“, “b” maps to “-...”, “c” maps to “-.-.”, and so on.
For convenience, the full table for the 26 letters of the English alphabet is given below:
Table:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",
".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
Example:
Input:  geeks
Output: --. . . -.- ...
Explanation: Here each letter in string is converted into morse code given at Table
 like for g letter morse code is "--." ,e=".",e=".",k="-.-",s="..."

Input: school 
Output: ... -.-. .... --- --- .-.. 
Approach: 
Store all the alphabet in an array named in this code is letter[] same here store all the alphabet in another array named code[].Convert the input string to char array str[].Iteratively match the character position with a letter in the letter array.Find its character position in that letter[] array and using that position returns the character present at that position from the code[] array.Iteratively find all Morse Code for all character in an input string and vice versa.
Store all the alphabet in an array named in this code is letter[] same here store all the alphabet in another array named code[].
Convert the input string to char array str[].
Iteratively match the character position with a letter in the letter array.
Find its character position in that letter[] array and using that position returns the character present at that position from the code[] array.
Iteratively find all Morse Code for all character in an input string and vice versa.
Below is the implementation of the above approach.
Java
// Java Program to Convert English// Text to Morse Code and Vice Versaimport java.util.*;public class Main {    public static void morseToEnglish(String[] code,                                      String morseCode)    {        String[] array = morseCode.split(" ");        System.out.print("Morse code " + morseCode                         + " to English is ");        // Morse code to English        for (int i = 0; i < array.length; i++) {            for (int j = 0; j < code.length; j++) {                if (array[i].compareTo(code[j]) == 0) {                    System.out.print((char)(j + 'a') + " ");                    break;                }            }        }    }    public static void englishToMorse(String[] code,                                      String englishLang,                                      char[] letter)    {        System.out.print("Morse code of " + englishLang                         + " is ");        for (int i = 0; i < englishLang.length(); i++) {            for (int j = 0; j < letter.length; j++) {                if (englishLang.charAt(i) == letter[j]) {                    System.out.print(code[j] + " ");                    break;                }            }        }    }     public static void main(String[] args)    {         // store the all the alphabet in an array        char[] letter = { 'a', 'b', 'c', 'd', 'e', 'f',                          'g', 'h', 'i', 'j', 'k', 'l',                          'm', 'n', 'o', 'p', 'q', 'r',                          's', 't', 'u', 'v', 'w', 'x',                          'y', 'z', '1', '2', '3', '4',                          '5', '6', '7', '8', '9', '0' };        // Morse code by indexing        String[] code            = { ".-",   "-...", "-.-.", "-..",  ".",                "..-.", "--.",  "....", "..",   ".---",                "-.-",  ".-..", "--",   "-.",   "---",                ".--.", "--.-", ".-.",  "...",  "-",                "..-",  "...-", ".--",  "-..-", "-.--",                "--..", "|" };         // Given Strings        String morseCode = "... -.-. .... --- --- .-..";        String englishLang = "alice";        // morse to English        morseToEnglish(code, morseCode);        System.out.println();        // English to morse code        englishToMorse(code, englishLang, letter);    }}
  
Morse code ... -.-. .... --- --- .-.. to English is s c h o o l 
Morse code of alice is .- .-.. .. -.-. . 
Time Complexity: O(n2)
Space Complexity: O(1)
 
Example: 
 
Input: ... -.-. .... --- --- .-.. 
Output: school
Explanation: Just reverse the step of previous one "..."=>s, "-.-"=>c, "...."=>h, "---"=>o, "---"=>o, ".-.."=> l

Input: --. . . -.- ...
Output: geeks
 
Approach: 
 
A. Morse Code to English.
 
Create two maps for Morse code to English conversion.Push all the Morse code and respective alphabets in the map.Start traversing Morse code string and display its respective English alphabet.
Create two maps for Morse code to English conversion.
Push all the Morse code and respective alphabets in the map.
Start traversing Morse code string and display its respective English alphabet.
 
B. English to Morse Code.
 
Store Morse code in the array.Start traversing string of English sentences.Use expression englishCharacter-‘a’ to get an index of Morse code.
Store Morse code in the array.
Start traversing string of English sentences.
Use expression englishCharacter-‘a’ to get an index of Morse code.
 
Below is an implementation of the above approach
 
Java
// Java Program to Convert English// Text to Morse Code and Vice Versaimport java.util.*;public class Main {    public static void morseToEnglish(String[] code,                                      String morseCode)    {        // morse code to English Hashmap        Map<String, Character> morseToEnglish            = new HashMap<>();        // Map value allocation        for (int i = 0; i < 26; i++) {            morseToEnglish.put(code[i], (char)('a' + i));        }        // Split morse code in array of string        String[] array = morseCode.split(" ");        System.out.print("Morse code " + morseCode                         + " to English is ");        // Morse code to English        for (int i = 0; i < array.length; i++) {            System.out.print(morseToEnglish.get(array[i])                             + " ");        }    }    public static void englishToMorse(String[] code,                                      String englishLang)    {        for (int i = 0; i < englishLang.length(); i++) {            System.out.print(                code[englishLang.charAt(i) - 'a'] + " ");        }    }    public static void main(String[] args)    {        // Morse code by indexing        String[] code            = { ".-",   "-...", "-.-.", "-..",  ".",                "..-.", "--.",  "....", "..",   ".---",                "-.-",  ".-..", "--",   "-.",   "---",                ".--.", "--.-", ".-.",  "...",  "-",                "..-",  "...-", ".--",  "-..-", "-.--",                "--..", "|" };         // Given Strings        String morseCode = "... -.-. .... --- --- .-..";        String englishLang = "alice";               // morse to English        morseToEnglish(code, morseCode);               System.out.println();               // English to morse code        englishToMorse(code, englishLang);    }}
  
Morse code ... -.-. .... --- --- .-.. to English is s c h o o l 
.- .-.. .. -.-. . 
Time Complexity: O(n)
Space Complexity: O(n)
 
Code_Mech
Technical Scripter 2020
Java
Java Programs
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Constructors in Java
Exceptions in Java
Functional Interfaces in Java
Different ways of Reading a text file in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
How to Iterate HashMap in Java?
Program to print ASCII Value of a character