Unique Morse Code Words – Leetcode Solution

In this post, we are going to solve the 804. Unique Morse Code Words problem of Leetcode. This problem 804. Unique Morse Code Words is a Leetcode easy level problem. Let’s see code, 804. Unique Morse Code Words – Leetcode Solution.

We provide the solution to this problem in 3 programming languages i.e. Java, C++ & Python.

Problem

International 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:

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]

Given an array of strings words where each word can be written as a concatenation of the Morse code of each letter.

  • For example, "cab" can be written as "-.-..--...", which is the concatenation of "-.-.", ".-", and "-...". We will call such a concatenation the transformation of a word.

Return the number of different transformations among all words we have.

Example 1 :


Input: words = ["gin","zen","gig","msg"]
Output: 2
Explanation: The transformation of each word is:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."
There are 2 different transformations: "--...-." and "--...--.".

Example 2 :


Input: words = ["a"]
Output: 1

Constraints

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 12
  • words[i] consists of lowercase English letters.

Now, let’s see the code of 804. Unique Morse Code Words – Leetcode Solution.

Unique Morse Code Words – Leetcode Solution

804. Unique Morse Code Words – Solution in Java

class Solution {
    public int uniqueMorseRepresentations(String[] words) {
        String[] morse = {".-","-...","-.-.","-..",".","..-.","--.",
                    "....","..",".---","-.-",".-..","--","-.",
                          "---",".--.","--.-",".-.","...",
                          "-","..-","...-",".--","-..-","-.--","--.."
                        };
        
        HashSet<String> wordsToCode = new HashSet<>();
        for(String word : words){
           StringBuilder code = new StringBuilder();
            for(char ch : word.toCharArray()){
                code.append(morse[ch-97]);
            }
            wordsToCode.add(code.toString());
        }
        return wordsToCode.size();
    }
}

804. Unique Morse Code Words – Solution in C++

class Solution {
  public:
    int uniqueMorseRepresentations(vector<string>& words) {
        vector<string> a = {".-","-...","-.-.","-..",".","..-.","--.","....",
                      "..",".---","-.-",".-..","--","-.","---",".--.",
                      "--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};

        unordered_map<string,int> um;

        for (int i=0; i< words.size(); i++) {
            string st;
            for (int j=0; j<words[i].size(); j++) 
                st += a[words[i][j] - 'a'];
            um[st]=1;
         }

      return um.size ();
    }
  };

804. Unique Morse Code Words – Solution in Python

class Solution:
    def uniqueMorseRepresentations(self, words: List[str]) -> int:
        s = set()
        mos = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
        
        for w in words:                    
            m = ''
            for l in w:                       
                m += mos[ord(l) - ord('a')] 
            s.add(m)                      
        
        return len(s)

Note: This problem 804. Unique Morse Code Words is generated by Leetcode but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.

Leave a Comment

Your email address will not be published. Required fields are marked *