Posted on 2023-09-23 19:04
Uriel 閱讀(38)
評論(0) 編輯 收藏 引用 所屬分類:
DP 、
閑來無事重切Leet Code
給出一堆單詞,從中選出若干,若要求每個單詞由前一個單詞在某個位置增加一個字符組成,問最多可以選出幾個單詞,DP,先對所有單詞按長度排名,枚舉單詞w,dp[w]=dp[pre]+1,若單詞w由pre加一個字母組成
1 #1048
2 #Runtime: 77 ms (Beats 90.91%)
3 #Memory: 13.5 MB (Beats 92.31%)
4
5 class Solution(object):
6 def longestStrChain(self, words):
7 """
8 :type words: List[str]
9 :rtype: int
10 """
11 dp = {}
12 ans = 1
13 for w in sorted(words, key=len):
14 dp[w] = 1
15 for i in range(len(w)):
16 pre = w[ : i] + w[i + 1 :]
17 if pre in dp:
18 dp[w] = max(dp[w], dp[pre] + 1)
19 ans = max(ans, dp[w])
20 return ans