LeetCode 804. 唯一摩尔斯密码词

解题思路:

主要是C++ STL容器的使用,用vector存储26个字母对应的摩尔斯密码表(因为字母之间有ASCII码的顺序关系所以可以用vector顺序存读,这里也可以用map存键值对),用unordered_set存储转译后的摩尔斯字符串以保证没有重复的键值,最后unordered_set的容量就是答案。

代码:

class Solution {
public:
    vector<string> morss = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};  //26个字母的摩尔斯密码表
    string toMorss(string word) {  //字符串转译为摩尔斯密码
        string str;
        for(auto w : word)
            str += morss[w - 'a'];
        return str;
    }
    int uniqueMorseRepresentations(vector<string>& words) {
        unordered_set<string> ans;  //无序set存储不重复的摩尔斯字符串
        for(auto word : words)
            ans.emplace(toMorss(word));
        return ans.size();  //无序set的不重复键值数即答案
    }
};

你可能感兴趣的:(刷题,leetcode,算法,数据结构,c++)