Skip to content

804. Unique Morse Code Words

https://leetcode.com/problems/unique-morse-code-words/

js
/**
 * @param {string[]} words
 * @return {number}
 */
var uniqueMorseRepresentations = function(words) {
  const morseList = [
    '.-', '-...', '-.-.', '-..', '.', '..-.', '--.',
    '....', '..', '.---', '-.-', '.-..', '--', '-.',
    '---', '.--.', '--.-', '.-.', '...', '-',
    '..-', '...-', '.--', '-..-', '-.--', '--..'
  ]

  const morseMap = 'abcdefghijklmnopqrstuvwxyz'.split('').reduce((ret, l, i) => {
    ret[l] = morseList[i]
    return ret
  }, {})

  const codeMap = {}
  words.forEach(w => {
    const codes = w.split('').reduce((ret, l) => {
      ret.push(morseMap[l])
      return ret
    }, []).join('')
    codeMap[codes] = true
  })

  return Object.keys(codeMap).length
}
py
class Solution:

    def uniqueMorseRepresentations(self, words):
        """
        :type words: List[str]
        :rtype: int
        """
        morse = [
            '.-', '-...', '-.-.', '-..', '.', '..-.', '--.',
            '....', '..', '.---', '-.-', '.-..', '--', '-.',
            '---', '.--.', '--.-', '.-.', '...', '-',
            '..-', '...-', '.--', '-..-', '-.--', '--..'
        ]
        codes = []

        for w in words:
            code = ''.join([morse[ord(l) - 97] for l in w])
            codes.append(code)

        return len(set(codes))