Skip to content

Instantly share code, notes, and snippets.

@ilyarmnzhdn
Last active June 10, 2018 10:37
Show Gist options
  • Save ilyarmnzhdn/c10b9c6a681ac90e0f552bdb9e53a270 to your computer and use it in GitHub Desktop.
Save ilyarmnzhdn/c10b9c6a681ac90e0f552bdb9e53a270 to your computer and use it in GitHub Desktop.
Unique Morse Code Words
let dictMap: [Character: String] = [
"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":"--.."
]
func uniqueMorse(_ words: [String]) -> Int {
guard !words.isEmpty else { return 0 }
var result = Set<String>()
words.forEach { word in
var morse = ""
word.forEach({ character in
morse += dictMap[character] ?? ".-"
})
result.insert(morse)
}
return result.count
}
uniqueMorse(["gin", "zen", "gig", "msg"])
@ilyarmnzhdn
Copy link
Author

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:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
Now, given a list of words, 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 "-.-." + "-..." + ".-"). We'll call such a concatenation, the transformation of a word.

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

Example:
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 "--...--.".

Note:

The length of words will be at most 100.
Each words[i] will have length in range [1, 12].
words[i] will only consist of lowercase letters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment