程序找到Python中最长的递减单词链的长度?

假设我们有一个有效单词的列表,也有一个字符串s,我们必须找到最长的递减单词链的长度,这些单词可以通过以s开头并删除单个字母来生成,并且仍然是有效单词来生成。

因此,如果输入像单词= [“ lii”,“ limit”,“ limi”,“ li”,“ coffee”,“ jug”,“ pool”,“ type”] s =“ limit”,则输出将是4,正如我们可以做的那样,从单词“ limit”,“ limit”->“ limi”->“ lii”->“ li”开始。

为了解决这个问题,我们将按照以下步骤

  • 定义一个功能solve()。这将需要单词,s

  • max_num:= 0

  • 对于每个我说的话

    • 对于范围0到s大小的j,执行

    • max_num:=最大值为1 + solve(单词,s [从索引0到j-1]连接s [从索引j +1到结尾])和max_num

    • 如果我与s相同,则

    • 返回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
    猜你喜欢