8/31 每日一題(找出轉換出來的摩斯碼有幾組不同)
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 <= 1001 <= words[i].length <= 12words[i]consists of lowercase English letters.
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
m=[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
word='abcdefghijklmnopqrstuvwxyz'
word_list=list(word)
my_dict={}
for k,v in zip(word_list,m):
my_dict[k]=v
res=set()
for i in words:
string=''
for j in i:
string+=my_dict[j]
res.add(string)
return len(res)
---------------------
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
d={"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":"--.."}
x=[]
for i in words:
x.append("".join([d[j] for j in i]))
return len(set(x))
-------------------
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
mapping = {
"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": "--.."
}
def translate_to_morse(word):
res = ""
for letter in word:
res += mapping[letter]
return res
word_dict = {}
res = 0
for word in words:
translated_word = translate_to_morse(word)
if translated_word not in word_dict.keys():
res += 1
word_dict[translated_word] = True
return res
標籤: leetcode
