forked from YuriSpiridonov/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
804.UniqueMorseCodeWords.py
54 lines (47 loc) · 2.3 KB
/
804.UniqueMorseCodeWords.py
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
"""
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.
"""
#Difficulty: Easy
#83 / 83 test cases passed.
#Runtime: 32 ms
#Memory Usage: 14.3 MB
#Runtime: 32 ms, faster than 78.35% of Python3 online submissions for Unique Morse Code Words.
#Memory Usage: 14.3 MB, less than 11.47% of Python3 online submissions for Unique Morse Code Words.
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
morse = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
transformations = {}
words = set(words)
for word in words:
for char in word:
if word not in transformations:
transformations[word] = ''
transformations[word] += morse[ord(char)-97]
return len(set(transformations.values()))