Unique Morse Code Words

Tags : leetcode, array, hash, cpp, easy

International Morse Code defines a standard encoding where each letter is mapped to a series of dots and dashes, as follows:

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.

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

Examples #

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 #

Solutions #

class Solution {
public:
    int uniqueMorseRepresentations(vector<string>& words) {
        string alp[26] = {
            ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."
        };
        unordered_set<string> us;
        for(string s : words ){
            string str="";
            for(char c: s){
                str += alp[c-'a'];
            }
            us.insert(str);
        }
        return us.size();
    }
};