摩尔斯密码单词翻译 - 力扣题解
摩尔斯密码单词翻译 - 力扣题解
题目描述
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串,比如: 'a' 对应 '-.' , 'b' 对应 '-...' , 'c' 对应 '-.-.' ,以此类推。为了方便,所有 26 个英文字母的摩尔斯密码表如下:
['.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-', '.--', '-..-', '-.--', '--..']
给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。 例如,'cab' 可以写成 '-.-..--...' ,(即 '-.-.' + '.-' + '-...' 字符串的结合)。我们将这样一个连接过程称作 单词翻译 。
对 words 中所有单词进行单词翻译,返回不同 单词翻译 的数量。
解题思路
- 首先将每个字母对应的摩尔斯密码存储到一个列表中。
- 对于每个单词,将单词中的每个字母转换成对应的摩尔斯密码,并将它们连接起来形成一个新的字符串。
- 将所有单词翻译后的字符串保存到一个集合中,利用集合的去重特性得到不同的单词翻译数量。
Python代码
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
morse = ['.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-', '.--', '-..-', '-.--', '--..']
translations = set()
for word in words:
translation = ''.join([morse[ord(char) - ord('a')] for char in word])
translations.add(translation)
return len(translations)
代码解析
- 定义一个列表
morse存储每个字母对应的摩尔斯密码。 - 创建一个集合
translations用于存储不同的单词翻译。 - 遍历
words中的每个单词。 - 对于每个单词,使用列表推导将单词中的每个字母转换成对应的摩尔斯密码,并将它们连接起来形成一个新的字符串
translation。 - 将
translation添加到集合translations中。 - 最后返回集合
translations的长度,即不同的单词翻译数量。
总结
本题使用集合的去重特性来统计不同单词翻译的数量,代码简洁易懂。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-morse-code-words
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
原文地址: https://www.cveoy.top/t/topic/mOEa 著作权归作者所有。请勿转载和采集!