2023年8月31日 星期四

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 <= 100
  • 1 <= words[i].length <= 12
  • words[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

標籤: