Longest String Chain

Given a list of words, each word consists of English lowercase letters.

Let's sayword1is a predecessor ofword2 if and only if we can add exactly one letter anywhere inword1to make it equal toword2. For example, "abc" is a predecessor of"abac".

A_word chain _is a sequence of words[word_1, word_2, ..., word_k] withk >= 1, whereword_1is a predecessor ofword_2,word_2is a predecessor ofword_3, and so on.

Return the longest possible length of a word chain with words chosen from the given list ofwords.

Example 1:

Input: 
["a","b","ba","bca","bda","bdca"]
Output: 
4

Explanation
: one of 
the longest word chain is "a","ba","bda","bdca".
Note:

1 <= words.length <= 1000
1 <= words[i].length <= 16
words[i] only consists of English lowercase letters.

分析

本题顺序可以重组,所以sort,注意可以直接sort(key=len)

每个词只有一个子,所以只要找到子+1就好,dp是dict: word->count

Last updated

Was this helpful?