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

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

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

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

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

例如:输入: words = ["gin", "zen", "gig", "msg"]输出: 2解释:

各单词翻译如下:

"gin" -> "--...-."

"zen" -> "--...-."

"gig" -> "--...--."

"msg" -> "--...--."

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

我在领扣刷题的时候是按照通过率来刷的,先从通过率最高的程序开始写,遇到这道题才明白自己的水平有多菜...

这里写这道题的分析主要是又学到了一个新的容器,set容器,这真的是一个完全没有接触过的容器之前也很少见到,如果不是看到别人用我还真不知道有叫set的容器.....

其实map和set是一个爸爸 - 红黑树爸爸,只不过set力气不够,不像map那么可以拥有一个主键(key)和实键(value).它只有一个键值并且set当中不能存储相同的键值(set还具有强迫症).  其实map和set的区别差不多就完了. 他们的相同点,他们底层都是使用红黑树构造的这使得他们的查找,插入,删除的效率都非常的高. 并且他们都是有序的,这些都非常关键! 这是一个好的容器的标准.当然set的禁忌也和map一样,set不能存储无法比较大小的数据.  因为构建红黑树需要比较大小. 而且在set中存储相同的键值 ,新的就会覆盖久的.set的特性是,所有元素都会根据元素的键值自动被排序. 并且我们不能通过迭代器来修改我们set的元素的值。

我最初写出来的程序我感觉是能实现题目的要求的,但是领扣和牛客不太一样,我感觉领扣经常会出现时间复杂度过高的情况,但是在牛客很少遇到,所以这次又是时间复杂度过高了,我是把所有的字符串对应转换过来之后.转换成0,_变成1把所有的摩斯码变成对应的01数组,然后存到vector之中,之后就是最复杂的去找里边有多少个种类,就现在把他简化一下我们有个数组里边存了1-1000000的数字你去看看这个数字里边有多少个不同的数,这还真不是一个十分简单的数,也想过哈希,但是这不是简单的int类型的数据,而是一个个数组去判断....只能用暴力求解了一个一个去匹配,导致程序时间复杂度过高。

  class Solution {public:int uniqueMorseRepresentations(vector<string>& words) {string str[26] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." };set<string> s;for (int i = 0; i < words.size(); i++){string a = "";for (int j = 0; j < words[i].size(); j++){a += str[words[i][j] - 'a'];}s.insert(a);}return s.size();}};

这是修改之后用的set容器的....set容器的特点就是每个数据只能有一个

我们看set容器的insert函数,里边说了我们现在插入一个新的元素,插入的时候去检查这个元素是不是已经在set容器里边了,如果在的话就没有被插入,最后还说了如果想要让里边有重复的数据可以去看multiset容器。也没听过....

反正这里set容器很好的解决了这个问题,重复的话就不会被插入进去,这样的话我们最后返回一下set容器的值就知道有多少个不同的类型了。

set和map容器的插入和删除效率是比其他容器要高的因为set容器内部所有数据都是以结点来存储的,所以每次插入和删除数据都只是通过修改指针来实现的。和内存没有什么关系。

领扣--唯一摩尔斯密码相关推荐

  1. 字符串 leetcode 804 唯一摩尔斯密码词

    题目 :唯一摩尔斯密码词 内容: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", &q ...

  2. 【Leetcode】每日一题:唯一摩尔斯密码词

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

  3. 【每日一算法】唯一摩尔斯密码词

    微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...

  4. 804.唯一摩尔斯密码词

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

  5. java 摩尔斯电码_Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)

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

  6. leetcode面试题 804. 唯一摩尔斯密码词

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

  7. 【算法leetcode每日一练】804. 唯一摩尔斯密码词

    文章目录 804. 唯一摩尔斯密码词: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust typescript 原题传送门:https://leetcod ...

  8. 804. 唯一摩尔斯密码词

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

  9. 哈希表题目:唯一摩尔斯密码词

    文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 解法 思路和算法 代码 复杂度分析 题目 标题和出处 标题:唯一摩尔斯密码词 出处:804. 唯一摩尔斯密码词 难度 2 级 题目描述 ...

最新文章

  1. 分别用Eigen和C++(OpenCV)实现图像(矩阵)转置
  2. 人工智能最受欢迎的十大TED演讲
  3. 【AGC013D】Pilling Up dp
  4. 码支付如何对接网站_支付宝当面付门店码如何做?
  5. React-生命周期杂记 1
  6. PAT乙级 1015 德才论
  7. 写给对前途迷茫的朋友
  8. NFS服务的端口分配
  9. linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
  10. 生活中的数学 —— 几何
  11. 给android应用程序系统的签名
  12. tidyverse —— readxl包
  13. 银行岗位的“香饽饽”—金融科技岗
  14. excel服务器模板修改,勤哲Excel服务器设计查询模板
  15. SSM项目实战之十一:用户信息的添加
  16. 【总结】仰望星空,脚踏实地 2017.09-2018.02
  17. 计算机视觉与深度学习(8)
  18. 如何在FreePBX ISO 中文版本安装讯时网关,潮流16FXS 网关和潮流话机
  19. BI神器Power Query(17)-- PQ制作时间维度表(6)
  20. openlayers5之ol.proj坐标转换

热门文章

  1. QUANT[10]量化交易——因子暴露度,因子收益与模型
  2. 华为云计算机总裁,华为云与计算BG人事调整 余承东兼任总裁
  3. 为何使用云原生应用架构 一 :独霸天下之四大绝技
  4. 机器学习——决策树算法的应用
  5. python和revit_Python 與 Revit
  6. linux scsi相关的一些学习笔记
  7. shell 向 awk 传参
  8. Samba客户端工具
  9. MySQL数据库基础知识,基础操作详细整理
  10. 反斜杠加3个数字是什么编码?JAVA转义序列、转义字符汇总。