Python 中唯一的莫尔斯电码单词


假设我们有一系列单词,这里每个单词都可以写成每个字母的莫尔斯电码的连接。例如,单词“cba”可以写成“-.-..--...” ,这是连接“-.-.” | "-..." | ".-")。这种连接称为单词的转换。

我们知道国际莫尔斯电码定义了一种标准编码,其中每个字母都映射到一系列点和短划线,如下所示:“a”映射到“.-”,“b”映射到“-...”,“c”映射到“-.-.”,依此类推。

以下是所有 26 个英文字母的列表:

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","- ","..-","...-",".--","-..-","-.--","--.."]

因此,如果输入类似于 ["gin", "zen", "gig", "msg"],则输出将为 2,因为每个单词的转换是:“gin”将为“--...-.”,“zen”将为“--...-.”“gig”将为“--...--.”,“msg”将为“--...--.”。

要解决此问题,我们将遵循以下步骤:

  • morse_codes:= [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
  • s:= 一个新的集合
  • 对于 words 中的每个单词,执行以下操作
    • temp:= 空字符串
    • 对于单词中的每个字符 c,执行以下操作
      • temp := temp + morse_codes[c 的 ASCII 码 - 97]
    • 将 temp 添加到 s 中
  • 返回 s 的大小

让我们看看以下实现以获得更好的理解:

示例

 实时演示

class Solution:
   def uniqueMorseRepresentations(self, words):
      morse_codes=[".-","-...","-.-.","-..",".","..-.","--
      .","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-
      .","...","-","..-","...-",".--","-..-","-.--","--.."]
      s=set()
      for word in words:
         temp=''
         for c in word:
            temp+=morse_codes[ord(c)-97]
         s.add(temp)
      return len(s)
ob = Solution()
print(ob.uniqueMorseRepresentations(["gin", "zen", "gig", "msg"]))

输入

["gin", "zen", "gig", "msg"]

输出

2

更新于: 2020-07-04

462 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.