LeetCode之Unique Morse Code Words
题目描述
26个小写字母对应于以下的Morse code
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
输入n个单词将其转换为给出的Morse code,输出转换后的不同的morse code的个数,举例:
输入: words = ["gin", "zen", "gig", "msg"]
输出:2
注意:单词的个数在100个以内
每个单词的长度为1-12
单词均为小写字母
解决思路
将转换后的morse code 存在set中,之后输出set的长度即可,因为set中存放的是不重复的数据
C++ contains 之 set、map
- set
set是有序集合,unordered_set是无序集合,存放不重复的数据
mutiset是有序集合,unordered_set是无序集合,可存放重复的数据 - map
map(有序)、unordered_map(无序),存放不重复的键值对
mutimap(有序)、unordered_map(无序) ,可存放重复的键值对
代码实现
int uniqueMorseRepresentations(vector<string>& words) {
vector<string> morse = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
vector<string>::iterator it_morse = morse.begin();
unordered_set<string> result;
for(auto str : words){
string temp = "";
for(auto it = str.cbegin(); it != str.cend(); ++it){
temp += *(it_morse + ((*it) - 97));
}
result.insert(temp);
}
int count = (int)result.size();
return count;
}
欢迎指正,如转载请注明出处