1048. Longest String Chain
文章目录
- 1题目理解
- 2 动态规划
1题目理解
输入:字符串数组words,字符串只包含小写字母
规则:对于word1和word2,如果在word1中任何一个位置添加一个字符能够得到word2,那么可以称word1为word2的前身。词链是单词 [word_1, word_2, …, word_k] 组成的序列,k >= 1,其中 word_1 是 word_2 的前身,word_2 是 word_3 的前身,依此类推。
输出:从words中选择词组成词链,词链可能的最长的长度。
Example 1:
Input: words = [“a”,“b”,“ba”,“bca”,“bda”,“bdca”]
Output: 4
Explanation: One of the longest word chain is “a”,“ba”,“bda”,“bdca”.
Example 2:
Input: words = [“xbc”,“pcxbcf”,“xb”,“cxbc”,“pcxbc”]
Output: 5
看了例子2,怎么也不明白怎么会是5,我觉得应该是3才对。这道题目和Longest Increasing Subsequence 是类似的。看了别人的答案才知道,从words中选择词,并没有说一定要按照顺序组成词链。选择n个词,之后可以按任意顺序组成词链,与原数组的下标无关。
2 动态规划
解题思路也和Longest Increasing Subsequence 是一样的。
class Solution {public int longestStrChain(String[] words) {int n = words.length;Arrays.sort(words, Comparator.comparingInt(String::length));int[] dp = new int[n];dp[0] = 1;int max = 1;for(int i=1;i<n;i++){dp[i] = 1;for(int j=0;j<i;j++){if(isPredecessor(words[j],words[i])){dp[i] = Math.max(dp[i],dp[j]+1);}}max = Math.max(max,dp[i]);}return max;}private boolean isPredecessor(String word1,String word2){if(word1.length()+1==word2.length()){int dis = 0;for(int i=0,j=0;i<word1.length() && j<word2.length();){if(word1.charAt(i) == word2.charAt(j)){j++;i++;}else{j++;dis++;}}return dis<=1;}return false;}
}
时间复杂度O(n2∗l)O(n^2*l)O(n2∗l)。n是words数组长度,l是每个单词的长度。
1048. Longest String Chain相关推荐
- leetcode刷题规划
LeetCode精华题目列表[刷题规划系列] – TuringPlanet 目录 算法题到底在考察什么? 题目列表 Array String Linked List Queue Stack Advan ...
- taoqick 搜索自己CSDN博客
L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...
- leetcode 5 :Longest Palindromic Substring 找出最长回文子串
题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...
- LeetCode 524. Longest Word in Dictionary through Deleting
题目: Given a string and a string dictionary, find the longest string in the dictionary that can be fo ...
- chain 的使用方法
阅读原文点我 chain 的使用形式如下: 1 chain(iterable1, iterable2, iterable3, ...) chain 接收多个可迭代对象作为参数,将它们『连接』起来,作为 ...
- 长安链cmc工具check user cert on chain failed解决
之前文章中介绍过使用国密算法启动链,但当国密算法链启动后,使用CMC命令工具进行后续的操作时,发生如下问题: Error: check user cert on chain failed, check ...
- undo表空间文件丢失恢复(3)--无备份无redo的情况下恢复
undo表空间的数据文件丢失,如果没有备份的情况下,而且redo也不可用,这个时候就要采用隐藏参数来恢复,下边给出一个例子. undo表空间文件丢失恢复(1)--有备份的情况下恢复:http://bl ...
- Create your own blockchain amp; cryptocurrency! - understand blockchains by creating one in python
What exactly is a blockchain? How does a blockchain work? What is Bitcoin or STEEM exactly? How does ...
- Learn Blockchains by Building One
You're here because, like me, you're psyched about the rise of Cryptocurrencies. And you want to kno ...
最新文章
- Composer scripts脚本:事件列表与脚本触发
- HTML, CSS. JS的各种奇淫技巧
- Tark钱包面向全球招募优秀上币方,千亿财富等你来拿!
- 企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据
- Shell脚本攻略01-简介/终端打印
- ASP.NET 4.0 的新特性(2 在WebForm中使用Routing)(翻译)
- 转:文件系统read,write缓存,有点意思
- Linux Container 研究报告
- 解决mac下webstorm编辑器识别less的问题
- Linux的实际操作:用户管理(查看用户和组的配置文件/etc/passwd /etc/group /etc/shadow)
- 计算机动漫设计VR主要学什么,VR动漫制作怎么学?
- 315记者卧底销售公司成为二把手:待遇比原来高多了,差点不想回来
- hibernate一对一关系实现
- java5个线程_java基础thread——java5之后的多线程(浅尝辄止)
- 大数据开发笔记(十):Hbase列存储数据库总结
- 我国标准时间授时方法
- Mac版Charles免费安装及使用
- 计算机系统复制文件,电脑没法复制文件?教您解决电脑没法复制文件
- 全文检索同时高亮多个字段
- tv.twitch.android,Twitch智能电视客户端
热门文章
- MySQL多项模糊查询
- SQLServer数据库,表内存,实例名分析SQL语句
- 也许你需要点实用的-Web前端笔试题
- Web Form要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。...
- ASP.NET多线程编程(一) 收藏
- javasript 操作option select
- 所谓语音合成 是计算机根据语言学,计算语言学完整1
- 设置公共请求参数_基于分布式锁的防止重复请求解决方案(值得收藏)
- 根据输入的日期计算周次和月份
- Jmeter使用流程及简单分析监控