[leetcode] 804. Unique Morse Code Words

it2022-05-06  9

Description

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.

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.

分析

题目的意思是:把单词转换成morse密码,然后看单词的morse密码有几种形式。

思路很直接,先把单词转换成morse密码,然后用map计数,然后遍历map就行了。

代码

class Solution { public: int uniqueMorseRepresentations(vector<string>& words) { vector<string> d = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; int cnt=0; unordered_map<string,int> m; for(string word:words){ string t; for(char c:word){ t+=d[c-'a']; } m[t]++; if(m[t]==1){ cnt++; } } return cnt; } };

参考文献

804. Unique Morse Code Words


最新回复(0)