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;
        }
    }
  • 相关阅读:
    iOS开发开辟线程总结--NSThread
    iOS开发GCD的简单使用
    iOS开发本地通知
    iOS开发JOSNModel<optional>,<convertondemand>,<index>
    开发iOS百度地图大头针可以重复点击
    iOS开发跳转指定页面
    iOS开发解决 jsonModel 属性跟系统的重复
    检测是否IE浏览器
    String.prototype运用
    C#读写XML
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12302605.html
Copyright © 2011-2022 走看看