Python程式:查詢最長遞減單詞鏈的長度?


假設我們有一個有效的單詞列表,還有一個字串 s,我們需要找到從 s 開始,透過移除單個字母並仍然構成有效單詞,可以生成的**最長遞減單詞鏈**的長度。

例如,如果輸入為 words = ["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"] s = "limit",則輸出將為 4,因為我們可以從單詞 "limit" 開始構建鏈: "limit" -> "limi" -> "lii" -> "li"。

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

  • 定義一個函式 solve()。它將接收 words 和 s 作為輸入。

  • max_num := 0

  • 對於 words 中的每個 i,執行以下操作:

    • 如果 i 與 s 相同,則執行以下操作:

      • 對於從 0 到 s 大小的範圍內的每個 j,執行以下操作:

        • max_num := 1 + solve(words, s[從索引 0 到 j-1] 連線 s[從索引 j + 1 到結尾]) 和 max_num 中的最大值

  • 返回 max_num


示例

 線上演示

class Solution:
   def solve(self, words, s):
      max_num = 0
      for i in words:
         if i == s:
            for j in range(len(s)):
               max_num = max(1 + self.solve(words, s[:j] + s[j + 1 :]), max_num)
      return max_num

ob = Solution()
words = ["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"]
s = "limit"
print(ob.solve(words, s))

輸入

["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"],"limit"

輸出

4

更新於: 2020年11月10日

155 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.