【刷题日记】804. 唯一摩尔斯密码词

简介: 本次刷题日记的第 29 篇,力扣题为:804. 唯一摩尔斯密码词 ,简单

【刷题日记】804. 唯一摩尔斯密码词

本次刷题日记的第 29 篇,力扣题为:804. 唯一摩尔斯密码词简单

一、题目描述:

image.png

今天周日,咱们也要保持习惯,leetcode 的今天每日一题是 一摩尔斯密码词,乍一看我们是不是也可以解密摩尔斯密码了?感觉有点意思


周日,leetcode 也想让咱放松一下,刷一个比较还理解的题目,一起来看看

二、这道题考察了什么思想?你的思路是什么?

这道题,给出了哪些重要点的信息呢:

  • 给出了从字母 a 到 字母 z 对应的字符串映射关系,这个映射关系我们不用刻意关注,哪怕变成其他的映射关系也无所谓,重点是我们只是他们是一一映射的就可以了
  • 题目要求,给出单词,我们要转换成对应的字符串,且在给出的单词数组中,不同的单词,可能存在相同的拼接结果字符串,那么,我们需要计算出,这些结果字符串中,不同种类的字符串翻译

看到上述给出的重点信息,对应让我们从字母或者单词,按照映射关系翻译成对应的字符串,这个没有啥好说的

直接写一个帮助列表,a-z 的字母,正好对应0-25 的列表索引,根据索引找到对应字符串,最后拼接起来即可

例如这样

image.png

那么我们可以很轻易的的拼接成字符串了,如何找到出不同的字符串呢

我们可以使用 hash 表来进行解决,hash 表的话,我们直接就可以使用 golang 中的 map 可以处理, c++ 中的 set 也可以处理,只要 key 是不会重复的就可以处理了

image.png

按照上述的思路,我们就可以很明确的得到这题的解决方式了,接下来,咱们就将上述思路,翻译成代码即可,思路还是很清晰的吧

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码,编码的时候,这里需要注意

  • 需要创建好一个帮助列表,存放,每一个字母对应的字符串
  • 使用 hash 表来处理和提取结果字符串的种类

编码如下:

func uniqueMorseRepresentations(words []string) int {
    // 先写一个帮助列表
    var helper = []string{
        ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
        "....", "..", ".---", "-.-", ".-..", "--", "-.",
        "---", ".--.", "--.-", ".-.", "...", "-", "..-",
        "...-", ".--", "-..-", "-.--", "--..",
    }
    m := map[string]int{}
    // 遍历单词
    for _,word := range words {
        // 开始处理每一个单词
        tmp := ""
        for _,ch := range word {
            tmp += helper[ch - 'a']
        }
        m[tmp]++
    }
    return len(m)
}

看完上述编码,还是很简单明了的,但是写过 golang 的兄弟,知道咱们直接拼接字符串效率是比较低, 我们可以使用 golang 自带的库, strings ,将上述关键代码替换成这样

css

复制代码

tmp := &strings.Builder{}tmp.WriteString(helper[ch-'a'])m[trans.String()]++

使用 strings.Builder 和 直接使用拼接字符串相比  strings.Builder 效率会高很多,具体原因是为什么,xdm 可以思考一下

四、总结:

此处,我们可以看到本题的时间复杂度是 O(S) ,此处的 S 可不是 单词的数量,而是每个单词的字符长度和,仔细看上述编码,咱们其实遍历的是每个单词的字符

此处的空间复杂度也是 O(S) ,我们创建的 tmp 字符串,开辟的空间也是如此

原题地址:804. 唯一摩尔斯密码词

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
C语言
【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马
【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马
111 0
|
数据安全/隐私保护
804 唯一摩尔斯密码词 leetcode
804 唯一摩尔斯密码词 leetcode
110 0
|
算法 C++
蓝桥杯每日一刷(第四天2016)
蓝桥杯每日一刷(第四天2016)
106 0
|
算法 Java C#
【算法千题案例】每日LeetCode打卡——95.唯一摩尔斯密码词
📢前言 🌲原题样例:唯一摩尔斯密码词 🌻C#方法:暴力法 🌻Java 方法:哈希集合 💬总结
|
算法 开发者
算法笔试模拟题精解之“吃奶酪”
根据题意,如果要花费最少时间,则每个奶酪都让离奶酪最近的人去拿,因此,坐标<=50000的奶酪让Tom去拿,坐标>=50001的奶酪让Jerry去拿。
算法笔试模拟题精解之“吃奶酪”
|
存储 程序员
这个颜值逆天的姑娘,居然是一枚程序员!(多图慎入,内有彩蛋)
在2016年阿里云年会上,一位清纯美丽、身材高挑、健康阳光的“维秘天使”闪亮登场,令现场的阿里云汉子们按耐不住心中的激荡,惊呼“女神”驾到! 如今随着网络的传播,这位阿里云女神已经在IT圈掀起了小小的波澜,不仅是阿里人,很多技术小伙伴都加入了她的粉丝圈,纷纷询问,这位女神到底是谁?  今天,我们就
20737 0
新海诚画集[秒速5センチメートル:樱花抄·铁道]
樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·...
1160 0
新海诚画集[秒速5センチメートル:樱花抄·學舍]
樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·...
1089 0