Python程式:查詢單詞列表中不同旋轉組的數量


假設我們有一個字串的旋轉組,其中包含其所有唯一的旋轉。如果輸入是“567”,則它可以旋轉為“675”和“756”,它們都在同一個旋轉組中。現在,如果我們有一系列字串words,我們必須按其旋轉組對每個單詞進行分組,並找到組的總數。

因此,如果輸入類似於words = ["xyz", "ab", "ba", "c", "yzx"],則輸出將為3,因為有三個旋轉組——["xyz", "yzx"], ["ab", "ba"], ["c"]。

為了解決這個問題,我們將遵循以下步驟:

  • s := 一個新的集合
  • ct := 0
  • 對於words中的每個i:
    • 如果i不在s中,則
      • ct := ct + 1
    • 對於範圍從0到i的大小的j:
      • temp := i的子串(從索引j到結尾)連線i的子串(從開頭到j)
      • 將temp插入s
  • 返回ct

讓我們看看下面的實現,以便更好地理解:

示例

 線上演示

class Solution:
   def solve(self, words):
      s=set()
      ct=0
      for i in words:
         if i not in s:
            ct+=1
         for j in range(len(i)):
            s.add(i[j:]+i[:j])
      return ct
ob = Solution()
print(ob.solve(["xyz", "ab", "ba", "c", "yzx"]))

輸入

["xyz", "ab", "ba", "c", "yzx"]

輸出

3

更新於:2020年10月5日

229 次檢視

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.