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.