zoukankan      html  css  js  c++  java
  • [LC] 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".

    word chain is a sequence of words [word_1, word_2, ..., word_k] with k >= 1, where word_1 is a predecessor of word_2word_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".


    class Solution {
        public int longestStrChain(String[] words) {
            Arrays.sort(words, (a, b) -> a.length() - b.length());
            // map is used as space for dp best[i] = 1 + best[i- 1]
            Map<String, Integer> map = new HashMap<>();
            int res = 0;
            for (String word: words) {
                map.put(word, 1);
                for (int i = 0; i < word.length(); i++) {
                    String prev = word.substring(0, i) + word.substring(i + 1);
                    int curLen = map.get(word);
                    if (map.containsKey(prev) && map.get(prev) + 1 > curLen) {
                        map.put(word, map.get(prev) + 1);
                    }
                }
                res = Math.max(res, map.get(word));
            }
            return res;
        }
    }
  • 相关阅读:
    1-22
    好久未更
    学习进度条 第十六周
    构建之法阅读笔记06
    返回一个整数数组中最大子数组的和(补充:输出该子数组)
    构建执法阅读笔记4
    第三周的学习进度情况
    构建之法阅读笔记03
    四则运算三
    安卓小程序之“标准体重计算器”
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12302605.html
Copyright © 2011-2022 走看看