数据结构与算法:leetcode_804_Unique Morse Code Words

  • Description
    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, “cab” 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 “–…–.”.

  • Solution
private static String[] morseCode = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-",
            ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--",
            "--.." };
    public static int uniqueMorseCodeWords(String[] words) {
        int slength = words.length;
        int uniqueWords = 0;
        HashMap<Integer, String> sMorseCode = new HashMap<>();
        for (int i = 0; i < slength; i++) {
            int clength = words[i].length();
            StringBuilder mValue = new StringBuilder();
            for (int j = 0; j < clength; j++) {
                char s = words[i].charAt(j);
                int sindex = s - 'a';
                String letterMorse = morseCode[sindex];
                mValue = mValue.append(letterMorse);
            }
            if (!sMorseCode.containsValue(mValue.toString())) {
                uniqueWords++;
            }
            sMorseCode.put(i, mValue.toString());
        }
        System.out.println("unique morse code word : " + uniqueWords);
        return uniqueWords;
    }

猜你喜欢

转载自blog.csdn.net/weixin_38021928/article/details/81150019