Python 中独特的摩尔斯电码单词

pythonserver side programmingprogramming更新于 2023/11/9 21:45:00

假设我们有一个单词列表,这里每个单词都可以写成每个字母的摩尔斯电码的串联。例如,单词"cba"可以写成"-.-..--...",这是串联"-.-."|"-..."|".-"。这种连接称为单词的变换。

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

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

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

因此,如果输入是这样的 ["gin", "zen", "gig", "msg"],那么输出将是 2,因为每个单词的变换是:"gin"将是"--...-.","zen"将是"--...-."" "gig" 将是 "--...--." 而 "msg" 将是 "--...--."。

为了解决这个问题,我们将遵循以下步骤 −

  • morse_codes:= [".-","-...","-.-.","-..","."..-.","--.","....","..",".---","-.-",".-..","--"- .","---",".--.","--.-",".-.","...","-","..-","...-",".-","-..-","-.-","-.--","--..","--..","--.."]
  • s:=一个新的集合
  • 对于 words 中的每个单词,执行
    • temp:= 空白字符串
    • 对于 word 中的每个 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

相关文章