zoukankan      html  css  js  c++  java
  • 257. 最长字符串链

    257. 最长字符串链

    中文English

    给出一个单词列表,其中每个单词都由小写英文字母组成。
    如果我们可以在 word1 的任何地方添加一个字母使其变成 word2,那么我们认为 word1 是 word2 的前身。例如,"abc" 是 "abac" 的前身。
    词链是单词 [word_1, word_2, ..., word_k] 组成的序列,k >= 1,其中 word_1 是 word_2 的前身,word_2 是 word_3 的前身,依此类推。
    从给定单词列表 words 中选择单词组成词链,返回词链的最长可能长度。

    样例

    样例 1

    输入:["ba","a","b","bca","bda","bdca"]
    输出:4
    解释:最长单词链之一为 "a","ba","bda","bdca"。
    

    注意事项

    1. 1 <= words.length <= 1000
    2. 1 <= words[i].length <= 16
    3. words[i] 仅由小写英文字母组成。
    输入测试数据 (每行一个参数)如何理解测试数据?

     同向型双指针 + 动态规划 + sorted排序用法

    class Solution:
        """
        @param words: the list of word.
        @return: the length of the longest string chain.
        """
        def longestStrChain(self, words):
            #动态规划,f[i] = max(f[j] + 1, f[i]) j也就是长度相差1的
            if not words: return 0 
            
            #初始化
            words = sorted(words, key = lambda x: len(x))
    
            length = len(words)
            dp = [1]*(length + 1)
            
            #计算顺序
            for i in range(1, length + 1):
                for j in range(1, i):
                    #如果相差1
                    if (len(words[i - 1]) - len(words[j - 1]) == 1) and (self.isSonStr(words[j - 1], words[i - 1])):
                        dp[i] = max(dp[j] + 1, dp[i])
            
            return max(dp)
    
        
        def isSonStr(self,str1, str2):
            left, right = 0, 0 
            #同向型双指针
            while right < len(str2):
                if str1[left] == str2[right]:
                    left += 1
                    right += 1
                else:
                    right += 1 
    
               #当left指针指向最后,并且可以继续往最后下一个走的时候
                if (left == len(str1)):
                    return True
            
            return False
  • 相关阅读:
    RCP二级菜单的实现
    volatile 的作用
    C6678 核间通信(IPC)
    大小端模式详解
    SPI 极性与相位对采样的影响
    DSP c6678的启动方式
    DSP CCS初学
    volatile的作用
    JTree/DefaultMutableTreeNode 树形结构
    java.awt.Graphics2D绘制流程图基本元素
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13197789.html
Copyright © 2011-2022 走看看