zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    0.1+0.2!==0.3
    标准盒模型IE盒模型
    Vue自定义组件通过v-model通信
    vue-cli3.0 使用 postcss-pxtorem px转rem
    render函数、createElement函数
    mixins(混入)
    vue.extend与vue.component
    js事件系列
    vue脚手架项目结构
    python模块和包
  • 原文地址:https://www.cnblogs.com/chanceYu/p/12045635.html
Copyright © 2011-2022 走看看