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;
        }
    }
    
  • 相关阅读:
    冲刺周期第一天
    05构建之法阅读笔记之三
    第十周进度表
    问题账户需求分析
    2016年秋季个人阅读计划
    课后作业--1:《软件需求与分析》博文读后感
    《人月神话》阅读笔记--3
    《人月神话》阅读笔记--02
    《人月神话》阅读笔记--01
    个人总结
  • 原文地址:https://www.cnblogs.com/chanceYu/p/12045635.html
Copyright © 2011-2022 走看看