• leetcode1048 Longest String Chain


    1048 Longest String Chain

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

    Let's say word1 is a predecessor of word2 if and only if we can add exactly one letter anywhere in word1 to make it equal to word2. For example, "abc" is a predecessor of "abac".

    A word chain is a sequence of words [word_1, word_2, ..., word_k] with k >= 1, where word_1 is a predecessor of word_2, word_2 is a predecessor of word_3, and so on.

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

    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.

    Clean Code

    class Solution {
    public:
        static bool compare(const string &s1, const string &s2) {
            return s1.length() < s2.length();
        }
    
        int longestStrChain(vector<string>& words) {
            sort(words.begin(), words.end(), compare);
            unordered_map<string, int> dp;
            int res = 0;
            for (string w : words) {
                int best = 0;
                for (int i = 0; i < w.length(); i++) {
                    string word = w.substr(0, i) + w.substr(i + 1);
                    best = max(best, dp[word] + 1);
                }
                dp[w] = best;
                res = max(res, best);
            }
            return res;
        }
    }
    
  • 相关阅读:
    PHP面试题4
    php面试题2
    php基础面试题1
    mysql添加索引命令
    lnmp初步学习知识整理
    代码运行的自由
    Lein droid
    关于Domain Sepcific Lang
    JavaScript倒计时类
    三国小记
  • 原文地址:https://www.cnblogs.com/chanceYu/p/12045635.html
Copyright © 2020-2023  润新知