领扣--唯一摩尔斯密码
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "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容器内部所有数据都是以结点来存储的,所以每次插入和删除数据都只是通过修改指针来实现的。和内存没有什么关系。
领扣--唯一摩尔斯密码相关推荐
- 字符串 leetcode 804 唯一摩尔斯密码词
题目 :唯一摩尔斯密码词 内容: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", &q ...
- 【Leetcode】每日一题:唯一摩尔斯密码词
唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--&quo ...
- 【每日一算法】唯一摩尔斯密码词
微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...
- 804.唯一摩尔斯密码词
题目 804.唯一摩尔斯密码词 题目大意 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 ...
- java 摩尔斯电码_Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
804. 唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", " ...
- leetcode面试题 804. 唯一摩尔斯密码词
leetcode面试题 804. 唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b ...
- 【算法leetcode每日一练】804. 唯一摩尔斯密码词
文章目录 804. 唯一摩尔斯密码词: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust typescript 原题传送门:https://leetcod ...
- 804. 唯一摩尔斯密码词
804. 唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", " ...
- 哈希表题目:唯一摩尔斯密码词
文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 解法 思路和算法 代码 复杂度分析 题目 标题和出处 标题:唯一摩尔斯密码词 出处:804. 唯一摩尔斯密码词 难度 2 级 题目描述 ...
最新文章
- 分别用Eigen和C++(OpenCV)实现图像(矩阵)转置
- 人工智能最受欢迎的十大TED演讲
- 【AGC013D】Pilling Up dp
- 码支付如何对接网站_支付宝当面付门店码如何做?
- React-生命周期杂记 1
- PAT乙级 1015 德才论
- 写给对前途迷茫的朋友
- NFS服务的端口分配
- linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
- 生活中的数学 —— 几何
- 给android应用程序系统的签名
- tidyverse —— readxl包
- 银行岗位的“香饽饽”—金融科技岗
- excel服务器模板修改,勤哲Excel服务器设计查询模板
- SSM项目实战之十一:用户信息的添加
- 【总结】仰望星空,脚踏实地 2017.09-2018.02
- 计算机视觉与深度学习(8)
- 如何在FreePBX ISO 中文版本安装讯时网关,潮流16FXS 网关和潮流话机
- BI神器Power Query(17)-- PQ制作时间维度表(6)
- openlayers5之ol.proj坐标转换