zoukankan      html  css  js  c++  java
  • LeetCode 804. Unique Morse Code Words

    804. Unique Morse Code Words

    International Morse Code defines a standard encoding where each letter is mapped to a series of dots and dashes, as follows: "a" maps to ".-", "b" maps to "-...", "c" maps to "-.-.", and so on.

    For convenience, the full table for the 26 letters of the English alphabet is given below:

    [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
    

    Now, given a list of words, each word can be written as a concatenation of the Morse code of each letter. For example, "cba" can be written as "-.-..--...", (which is the concatenation "-.-." + "-..." + ".-"). We'll call such a concatenation, the transformation of a word.

    Return the number of different transformations among all 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.

    题目描述:我们可以将单词描述为摩斯密码,问在一组单词中有多少个代表的莫斯密码是不同的。

    题目分析:LeetCode 929. Unique Email Addresses 很类似,也是为了过滤掉重复的元素,我们可以用set集合去过滤。然后把单词转换为莫斯密码,然后过滤即可。

    python 代码:

    class Solution(object):
        def uniqueMorseRepresentations(self, words):
            """
            :type words: List[str]
            :rtype: int
            """
            maps = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
            words_length = len(words)
            morse_code = set()
            for i in range(words_length):
                word_string = words[i]
                word_string_length = len(word_string)
                string_code = ''
                for i in range(word_string_length):
                    string_code += maps[ord(word_string[i]) - 97]
                morse_code.add(string_code)
                
            return len(morse_code)
    

    C++ 代码:

    class Solution {
    public:
        int uniqueMorseRepresentations(vector<string>& words) {
            set<string> morse_code;
            vector<string> string_code(words.size());
            vector<string> maps = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
    //	a b c d e f g h i j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
    //  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
            for(int i = 0; i < words.size(); i++){
                for(int j = 0; j < words[i].size(); j++){
                    string_code[i].append(maps[words[i][j] - 'a']);
                }
            }
            for(int i = 0; i < string_code.size(); i++){
                morse_code.insert(string_code[i]);
            }
            return morse_code.size();
        }
    };
    
  • 相关阅读:
    纯线性同余随机数生成器
    读书笔记之:C语言参考手册(第5版)
    读书笔记之:C语言函数库
    读书笔记之:C/C++程序员实用大全—C/C++最佳编程指南
    C++中重要关键字总结
    读书笔记之:C++参考大全
    读书笔记之:C++大学教程(第2版)
    C语言中函数参数入栈的顺序
    ANSI设备驱动器
    可以输出自己的源程序代码(quine)
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/10158761.html
Copyright © 2011-2022 走看看