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();
}
};