摩尔斯密码单词翻译 - 力扣题解

题目描述

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

['.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-', '.--', '-..-', '-.--', '--..']

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

对 words 中所有单词进行单词翻译,返回不同 单词翻译 的数量。

解题思路

  1. 首先将每个字母对应的摩尔斯密码存储到一个列表中。
  2. 对于每个单词,将单词中的每个字母转换成对应的摩尔斯密码,并将它们连接起来形成一个新的字符串。
  3. 将所有单词翻译后的字符串保存到一个集合中,利用集合的去重特性得到不同的单词翻译数量。

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)

代码解析

  1. 定义一个列表 morse 存储每个字母对应的摩尔斯密码。
  2. 创建一个集合 translations 用于存储不同的单词翻译。
  3. 遍历 words 中的每个单词。
  4. 对于每个单词,使用列表推导将单词中的每个字母转换成对应的摩尔斯密码,并将它们连接起来形成一个新的字符串 translation
  5. translation 添加到集合 translations 中。
  6. 最后返回集合 translations 的长度,即不同的单词翻译数量。

总结

本题使用集合的去重特性来统计不同单词翻译的数量,代码简洁易懂。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/unique-morse-code-words

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

摩尔斯密码单词翻译 - 力扣题解

原文地址: https://www.cveoy.top/t/topic/mOEa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录