leecode [唯一摩尔斯密码词]

今天看到leecode [唯一摩尔斯密码词]比较有趣,但发现网页上一处错误,如下:

根据原文定义"cab"对应的摩斯密码应该是"-.-..--...",已经联系leecode人员改正。

具体步骤简单分解为:
1、将26个字母及对应的摩斯密码做成字典表
2、以单词为单位去查字典表,将字母对应摩斯密码首尾连接,返回单词对应的莫斯字符串
3、自定义一个空的字典morse_words = {},对给定的单词数组遍历调用第2步,但遍历中需要判断单词
对应的莫斯字符串是否在morse_words中
对应Python代码如下:

def morse_decode(single_wd):   encode_ms = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.",             "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]   ws = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘, ‘k‘, ‘l‘, ‘m‘, ‘n‘, ‘o‘, ‘p‘, ‘q‘, ‘r‘, ‘s‘, ‘t‘, ‘u‘, ‘v‘,        ‘w‘, ‘x‘, ‘y‘, ‘z‘]   maps = {}   cnt = len(encode_ms)   for i in range(cnt):      maps[ws[i]] = encode_ms[i]   # print(encode_ms[i], ws[i])   # print(maps)   single_ms = ‘‘   for i in range(len(single_wd)):      char = single_wd[i]      char_morse = maps.get(char)      single_ms += char_morse   # print(w, m)   print(single_wd, single_ms)   return single_ms

def morse_distinct(words):   morse_words = {}   for w in words:      morse_word = morse_decode(single_wd=w)      print(morse_word)      if morse_word not in morse_words.values():         morse_words[w] = morse_word   print(morse_words)   return len(morse_words)

if (__name__==‘__main__‘):   # main()   words = ["gin", "zen", "gig", "msg"]   morse_decode(single_wd=‘cab‘)   cnt = morse_distinct(words=words)   print(‘distinct morse encode:  ‘, cnt)

如有问题欢迎批评指正。

原文地址:https://www.cnblogs.com/John-Geek-2018/p/9957226.html

时间: 2024-10-03 09:57:34

leecode [唯一摩尔斯密码词]的相关文章

leecode练习--804、唯一摩尔斯密码词

leecode练习--804.唯一摩尔斯密码词 题目要求: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等 为了方便,所有26个英文字母对应摩尔斯密码表如下: [".-","-...","-.-.&qu

804. 唯一摩尔斯密码词

国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等. 为了方便,所有26个英文字母对应摩尔斯密码表如下: [".-","-...","-.-.","-..",".&

LeetCode 804 唯一摩尔斯密码词

package com.lt.datastructure.Set; import java.util.TreeSet; /* * 一个摩斯码,对应一个字母.返回我们可以获得所有词不同单词翻译的数量. * 遍历字符串,word.charAt(i)-'a'获得当前字符所对应的索引,添加到StringBuilder容器. * 用集合去重 * 返回集合size */ public class LeetCode804 { public static int uniqueMorseRepresentatio

力扣题目汇总(转换成小写字母,唯一摩尔斯密码,有序数组平方)

力扣题目汇总(转换成小写字母,唯一摩尔斯密码,有序数组平方) 转换成小写字母 1.题目描述 实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hello" 输出: "hello" 示例 2: 输入: "here" 输出: "here" 示例 3: 输入: "LOVELY" 输出: "lovel

leetcode摩尔斯密码

国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串,?比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等. 为了方便,所有26个英文字母对应摩尔斯密码表如下: [".-","-...","-.-.","-..",".&

摩尔斯电码(Morse Code)Csharp实现

摩尔斯电码,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命.摩尔斯电码在海事通讯中被作为国际标准一直使用到1999年.不过随着科技的发展,最终还是倒在了历史的车轮下(PS:等等,为何这么熟悉??观众:好一片根正苗红的*文啊,啊啊啊啊),1997年,当法国海军停止使用摩尔斯电码时,发送的最后一条消息是:“所有人注意,这是我们在永远沉寂之前最后的一声呐喊!”. 任何关于Morse code可拓展的咨询,请移步维基百科:摩尔

摩尔斯电码 对照 英文 字母

".-", a "-...",b "-.-.",c "-..",d ".",e "..-.",f "--.",g "....",h "..",i ".---",j "-.-",k ".-..",l "--",m "-.",n &q

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

集合和映射(Set And Map)

目录 集合 Set 基于二分搜索树实现集合 基于链表实现集合 集合的时间复杂度分析 映射 Map 基于链表实现映射 基于二分搜索树实现映射 映射的时间复杂度分析 leetcode上关于集合和映射的问题 集合 Set ??Set是一种新的数据结构,类似于数组,但是不能添加重复的元素,基于Set集合的这个特性,我们可以使用Set集合进行客户统计和词汇统计等,集合中常用的方法如下: public interface Set<E> { void add(E e); //添加元素e,不能添加重复元素 b