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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP