관리 메뉴

솜씨좋은장씨

[leetCode] 804. Unique Morse Code Words (Python) 본문

Programming/코딩 1일 1문제

[leetCode] 804. Unique Morse Code Words (Python)

솜씨좋은장씨 2021. 1. 24. 17:07
728x90
반응형

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.

Solution 1 

class Solution:
    @staticmethod
    def transformation(text):
        morse_dict = {'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': '--..'}
        
        char_list = list(text)
        
        temp = ""
        
        for char in char_list:
            temp = temp + morse_dict[char]
            
        return temp
    
    
    def uniqueMorseRepresentations(self, words: List[str]) -> int:
        morse_list = []
        
        for word in words:
            morse = self.transformation(word)
            
            morse_list.append(morse)
            
        set_morse = set(morse_list)
        
        return len(set_morse)

Solution 2

class Solution:
    @staticmethod
    def transformation(text):
        morse_dict = {'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': '--..'}
        
        char_list = list(text)
        
        temp = ""
        
        for char in char_list:
            temp = temp + morse_dict[char]
            
        return temp
    
    
    def uniqueMorseRepresentations(self, words: List[str]) -> int:
        morse_list = []
        
        for word in words:
            morse = self.transformation(word)
            if morse not in morse_list:
                morse_list.append(morse)
        
        return len(morse_list)

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments