International Morse Code defines a standard encodingwhere each letter is mapped to a series of dots and dashes, as follows: "a" mapsto ".-", "b" mapsto "-...", "c" mapsto "-.-.", and so on.
For convenience, the full table for the 26 letters ofthe English alphabet is given below:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
Now, given a list of words, each word can be writtenas a concatenation of the Morse code of each letter. For example,"cab" can be written as "-.-.-....-", (which is theconcatenation "-.-." + "-..." + ".-"). We'll callsuch a concatenation, the transformation of a word.
Return the number of different transformations amongall 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.
這一題也不難,給你一個字母和莫斯電碼的轉換規則,給你一個字符串組成的數組,問你將數組裏面的字符串全部轉換成莫斯電碼的形式之後共有多少種不同的莫斯電碼
這一題直接轉換就行了,可以利用set裏面不能有相同元素的特性,將所有的轉換之後的電碼都裝入set裏面,最後統計set的大小就能得到莫斯電碼的總數
class Solution {
public:
int uniqueMorseRepresentations(vector<string>& words) {
string theH[26] ={
".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."
};
string tmp = "";
set<string> theStore;
for(int i=0;i<(int)words.size();i++)
{ tmp = "";
for(int j=0;j<words[i].size();j++)
{
tmp.append(theH[words[i][j]-'a']);
}
theStore.insert(tmp);
}
return theStore.size();
}
};