Java
-
import java.util.HashSet; import java.util.Set; /** 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 "--...--.". */ public class Unique_Morse_Code_Words { class Solution { public int uniqueMorseRepresentations(String[] words) { String[] MORSE = new String[]{ ".-","-...","-.-.","-..",".","..-.","--.", "....","..",".---","-.-",".-..","--","-.", "---",".--.","--.-",".-.","...","-","..-", "...-",".--","-..-","-.--","--.."}; Set<String> seen = new HashSet<>(); for (String word: words) { StringBuilder code = new StringBuilder(); for (char c: word.toCharArray()) code.append(MORSE[c - 'a']); seen.add(code.toString()); } return seen.size(); } } }
-
// OJ: https://leetcode.com/problems/unique-morse-code-words/ // Time: O(N) // Space: O(N) class Solution { private: string dict[26] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; public: int uniqueMorseRepresentations(vector<string>& words) { unordered_set<string> s; for (string word : words) { string code; for (char c : word) code += dict[c - 'a']; s.insert(code); } return s.size(); } };
-
class Solution(object): def uniqueMorseRepresentations(self, words): """ :type words: List[str] :rtype: int """ moorse = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."] trans = lambda x: moorse[ord(x) - ord('a')] map_word = lambda word: ''.join([trans(x) for x in word]) res = map(map_word, words) return len(set(res))
Java
-
class Solution { public int uniqueMorseRepresentations(String[] words) { String[] morseArray = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; Set<String> set = new HashSet<String>(); for (String word : words) { StringBuffer sb = new StringBuffer(); char[] array = word.toCharArray(); for (char c : array) sb.append(morseArray[c - 'a']); set.add(sb.toString()); } return set.size(); } }
-
// OJ: https://leetcode.com/problems/unique-morse-code-words/ // Time: O(N) // Space: O(N) class Solution { private: string dict[26] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; public: int uniqueMorseRepresentations(vector<string>& words) { unordered_set<string> s; for (string word : words) { string code; for (char c : word) code += dict[c - 'a']; s.insert(code); } return s.size(); } };
-
class Solution(object): def uniqueMorseRepresentations(self, words): """ :type words: List[str] :rtype: int """ moorse = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."] trans = lambda x: moorse[ord(x) - ord('a')] map_word = lambda word: ''.join([trans(x) for x in word]) res = map(map_word, words) return len(set(res))