前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法-唯一莫尔斯密码

算法-唯一莫尔斯密码

作者头像
Fisherman渔夫
发布2019-07-31 14:51:31
3080
发布2019-07-31 14:51:31
举报
文章被收录于专栏:渔夫

版权声明: https://blog.csdn.net/li_xunhuan/article/details/90202659

题目描述:

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

为了方便,所有26个英文字母对应摩尔斯密码表如下:

[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–.","–.-",".-.","…","-","…-","…-",".–","-…-","-.–","–…"]

给定一个单词列表,每个单词可以写成每个字母对应摩尔斯密码的组合。例如,“cab” 可以写成 “-.-…–…”,(即 “-.-.” + “-…” + ".-"字符串的结合)。我们将这样一个连接过程称作单词翻译。

返回我们可以获得所有词不同单词翻译的数量。

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

共有 2 种不同翻译, “–…-.” 和 “–…--.”.

注意:

代码语言:javascript
复制
单词列表words 的长度不会超过 100。
每个单词 words[i]的长度范围为 [1, 12]。
每个单词 words[i]只包含小写字母。

代码:

代码语言:javascript
复制
import java.util.HashMap;
import java.util.HashSet;

class Solution {
private HashMap<Character,String> hashmap= new HashMap<>(26);
private static String[] map = {
        ".-",
        "-...",
        "-.-.",
        "-..",
        ".",
        "..-.",
        "--.",
        "....",
        "..",
        ".---",
        "-.-",
        ".-..",
        "--",
        "-.",
        "---",
        ".--.",
        "--.-",
        ".-.",
        "...",
        "-",
        "..-",
        "...-",
        ".--",
        "-..-",
        "-.--",
        "--.."
};
public int uniqueMorseRepresentations(String[] words) {
    char tempChar ='a';
    for (int i=0;i<26;i++) {
        hashmap.put(tempChar,map[i]);    
        tempChar++;
    }
    if (words == null) return 0;
    HashSet<String> set = new HashSet<String>();
    for (String s : words) {
        StringBuilder sb = new StringBuilder();
        for (char c : s.toCharArray()) {
            sb.append(hashmap.get(c));
        }
        set.add(sb.toString());
    }
    return set.size();
}
}

分析:

1.实际上要求在一个给定的序列(数组/字符串/字符串数组等)中统计出现过的元素数目,要求不能重复统计相同元素。这个类型的题目实际上很常见,一般的解决方案通过遍历将元素放置于HashSet结构体中,最终返回其结构体元素个数即可。这是HashSet数据结构的一个常见应用 2.我们所要注意的是所要求统计的数据是哪一个,毕竟如此题中,这个需要统计的数据并没有直接给出。需要我们经过遍历,将其写出。 3.简单说明一下两个遍历: 1)第一层是对字符串数组的遍历,String[] words是由多个字符串构成的,我们对字符串一个一个解决,所以需要遍历 2)第二层遍历是由于摩尔密码在HashMap中Key为Character类型,对于String类型变量,需要通过遍历达到字符串到字符的转换

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年05月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
    • 注意:
      • 代码:
        • 分析:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档