LeetCode刷题记录Java算法提高之LeetCode刷题

LeetCode 804. 唯一摩尔斯密码词

2019-07-15  本文已影响0人  TheKey_

804. 唯一摩尔斯密码词

国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
例如:
输入: words = ["gin", "zen", "gig", "msg"]
输出: 2
解释: 
各单词翻译如下:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."

共有 2 种不同翻译, "--...-." 和 "--...--.".
注意:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-morse-code-words/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路 : 使用set中没有重复元素的特性

将每个单词的摩斯密码放入set集合中,返回set.size即可

public static int uniqueMorseRepresentations(String[] words) {
        String[] code = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
        Set<String> set = new HashSet<>();
        for (String word : words) {
            StringBuilder res = new StringBuilder();
            for (int i = 0; i < word.length(); i++) {
                res.append(code[word.charAt(i) - 'a']);
            }
            set.add(res.toString());
        }
        return set.size();
    }

复杂度分析:

public static void main(String[] args) {
        String[] words = {"gin", "zen", "gig", "msg"};
        System.out.println("唯一摩尔斯密码词:" + uniqueMorseRepresentations(words));
    }
唯一摩尔斯密码词:2

上一篇下一篇

猜你喜欢

热点阅读