09 Sept 2026Go / Python / TypeScriptEasy

Unique Morse Code Words

Count distinct Morse encodings produced by a list of lowercase words.

Translate each letter through a fixed table, concatenate each word's code, and insert it into a set.

complexity

O(total characters) time and O(w) stored encodings.

solution files

  • Go unique-morse-code-words/solution.go
  • Python unique-morse-code-words/solution.py
  • TypeScript unique-morse-code-words/solution.ts

Solution files

Gounique-morse-code-words/solution.go
package main

import "strings"

func uniqueMorseRepresentations(words []string) int {
	codes := []string{".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}
	seen := map[string]bool{}
	for _, word := range words {
		var encoded strings.Builder
		for _, letter := range word {
			encoded.WriteString(codes[letter-'a'])
		}
		seen[encoded.String()] = true
	}
	return len(seen)
}
Pythonunique-morse-code-words/solution.py
class Solution:
    def uniqueMorseRepresentations(self, words: list[str]) -> int:
        codes = [class="syntax-string">".-", class="syntax-string">"-...", class="syntax-string">"-.-.", class="syntax-string">"-..", class="syntax-string">".", class="syntax-string">"..-.", class="syntax-string">"--.", class="syntax-string">"....", class="syntax-string">"..", class="syntax-string">".---", class="syntax-string">"-.-", class="syntax-string">".-..", class="syntax-string">"--", class="syntax-string">"-.", class="syntax-string">"---", class="syntax-string">".--.", class="syntax-string">"--.-", class="syntax-string">".-.", class="syntax-string">"...", class="syntax-string">"-", class="syntax-string">"..-", class="syntax-string">"...-", class="syntax-string">".--", class="syntax-string">"-..-", class="syntax-string">"-.--", class="syntax-string">"--.."]
        return len({class="syntax-string">"".join(codes[ord(letter) - ord(class="syntax-string">"a")] for letter in word) for word in words})
TypeScriptunique-morse-code-words/solution.ts
function uniqueMorseRepresentations(words: string[]): number {
  const codes = [class="syntax-string">".-", class="syntax-string">"-...", class="syntax-string">"-.-.", class="syntax-string">"-..", class="syntax-string">".", class="syntax-string">"..-.", class="syntax-string">"--.", class="syntax-string">"....", class="syntax-string">"..", class="syntax-string">".---", class="syntax-string">"-.-", class="syntax-string">".-..", class="syntax-string">"--", class="syntax-string">"-.", class="syntax-string">"---", class="syntax-string">".--.", class="syntax-string">"--.-", class="syntax-string">".-.", class="syntax-string">"...", class="syntax-string">"-", class="syntax-string">"..-", class="syntax-string">"...-", class="syntax-string">".--", class="syntax-string">"-..-", class="syntax-string">"-.--", class="syntax-string">"--.."];
  return new Set(words.map((word) => [...word].map((letter) => codes[letter.charCodeAt(class="syntax-number">0) - class="syntax-number">97]).join(class="syntax-string">""))).size;
}