思路:
1、对于Morse 集 定义vector容器来存储(set也可以 );
2、新建一个容器来存放 加密后的字符串
3、遍历容器words中的每个字符串,对于字符串words[i][j]进行转换,words[i][j]-97orwords[i][j]-'a' 存放入临时字符串temp,再将temp push_back到容器中
4、最后有个点就是去重问题,这里用的是vector 的unique
sort(v.begin(),v.end());
v.erase(unique(v.begin(), v.end()), v.end());
//unique()函数将重复的元素放到vector的尾部 然后返回指向第一个重复元素的迭代器 再用erase函数擦除从这个元素到最后元素的所有的元素
class Solution {
public:
int uniqueMorseRepresentations(vector<string>& words) {
vector<string>Morse;
vector<string>result;
Morse={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
//遍历words容器中元素,将字符串的每个元素进行转换
for(int i=0;i<words.size();i++){
string temp;
for(int j=0;j<words[i].length();j++){
int k = words[i][j]-97;
temp += Morse[k];
}
//转化后的元素插入到result中
result.push_back(temp);
}
//去重
sort(result.begin(),result.end());
result.erase(unique(result.begin(), result.end()), result.end());
return result.size();
}
};