<filename>801-900/804.UniqueMorseCodeWords.py
#
# 804. Unique Morse Code Words
#
# 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, "cba" 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.
#


# What I think..
class Solution:
    morse = [
        ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
        ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
        "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
    ]

    def convert(self, word):
        res = ''
        for letter in word:
            res += self.morse[ord(letter) - 97]
        return res

    def uniqueMorseRepresentations(self, words):
        answer = set()
        for word in words:
            answer.add(self.convert(word))
        return len(answer)
        # return len({self.convert(word) for word in words})


# What others think...
class Solution2:
    def uniqueMorseRepresentations(self, words):
        morse = [
            ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
            ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
            "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
        ]
        return ({''.join(morse[ord(l) - 97] for l in word) for word in words})


s = Solution()
print(s.uniqueMorseRepresentations(["gin", "zen", "gig", "msg"]))

<filename>801-900/804.UniqueMorseCodeWords.py
#
# 804. Unique Morse Code Words
#
# 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, "cba" 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.
#


# What I think..
class Solution:
    morse = [
        ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
        ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
        "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
    ]

    def convert(self, word):
        res = ''
        for letter in word:
            res += self.morse[ord(letter) - 97]
        return res

    def uniqueMorseRepresentations(self, words):
        answer = set()
        for word in words:
            answer.add(self.convert(word))
        return len(answer)
        # return len({self.convert(word) for word in words})


# What others think...
class Solution2:
    def uniqueMorseRepresentations(self, words):
        morse = [
            ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
            ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
            "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
        ]
        return ({''.join(morse[ord(l) - 97] for l in word) for word in words})


s = Solution()
print(s.uniqueMorseRepresentations(["gin", "zen", "gig", "msg"]))

# # 804. Unique Morse Code Words # # 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, "cba" 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. # # What I think.. # return len({self.convert(word) for word in words}) # What others think...