Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
给出一堆单词,从中选出若干,若要求每个单词由前一个单词在某个位置增加一个字符组成,问最多可以选出几个单词,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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理