草庐IT

最长公共子序列问题

最长公共子序列和最长公共子串区别最长公共子串(LongestCommonSubstring)与最长公共子序列(LongestCommonSubsequence)的区别:子串要求在原字符串中是连续的,而子序列则只需保持相对顺序一致,并不要求连续。例如  X={a,Q,1,1};Y={a,1,1,d,f}那么,{a,1,1}是X和Y的最长公共子序列,但不是它们的最长公共字串。最优子结构 思路我们的目的是寻找两个顺序相对一致的序列所以我们需要构建一个二维数组进行统计,记录遍历的时候他们相同的地方设有这样的两个序列:{A,L,C,H,E,M,I,S,T}{A,L,G,O,R,I,T,H,M,S} 第一

LeetCode - 无重复字符的最长子串

题目信息源地址:最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。提示信息示例1输入:strs=["flower","flow","flight"]输出:"fl"提示2输入:strs=["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示10strs[i]仅由小写英文字母组成实现逻辑逐一对比此方法如其名称,即将数组中的字符串逐一进行对比,先找出第一、第二个字符串的最长公共前缀,再找出第二、第三个字符串的最长公共前缀,以此类推,直至完成所有字符串的比较。当然,当在对比过程中发现最长公共前缀已经为空,则直接返回即可。此方

LeetCode - 无重复字符的最长子串

题目信息源地址:最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。提示信息示例1输入:strs=["flower","flow","flight"]输出:"fl"提示2输入:strs=["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示10strs[i]仅由小写英文字母组成实现逻辑逐一对比此方法如其名称,即将数组中的字符串逐一进行对比,先找出第一、第二个字符串的最长公共前缀,再找出第二、第三个字符串的最长公共前缀,以此类推,直至完成所有字符串的比较。当然,当在对比过程中发现最长公共前缀已经为空,则直接返回即可。此方

【JS】5. 最长回文子串(待更新中)

5.最长回文子串给你一个字符串s,找到s中最长的回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1s仅由数字和英文字母组成解法一:暴力用双重循环遍历字符串的所有起始位置与终止位置,然后判断是否是回文子串,是就更新最长长度和回文的起始位置,方便之后分隔字符串成子串。varlongestPalindrome=function(s){//处理特殊情况,长度小于2的就直接返回letlen=s.length;if(lenmaxLen&&validP(s,i,j)){//更新长度、起始下标maxLen=j-i

【JS】5. 最长回文子串(待更新中)

5.最长回文子串给你一个字符串s,找到s中最长的回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1s仅由数字和英文字母组成解法一:暴力用双重循环遍历字符串的所有起始位置与终止位置,然后判断是否是回文子串,是就更新最长长度和回文的起始位置,方便之后分隔字符串成子串。varlongestPalindrome=function(s){//处理特殊情况,长度小于2的就直接返回letlen=s.length;if(lenmaxLen&&validP(s,i,j)){//更新长度、起始下标maxLen=j-i

leetcode 300. Longest Increasing Subsequence 最长递增子序列 (中等)

一、题目大意标签:动态规划https://leetcode.cn/problems/longest-increasing-subsequence给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是[2,3,7,101],因此长度为4。示例2:输入:nums=[0,1,0,3,2,3]输出:4示例3:输入:nums=[7,7,7,7,7,7,

leetcode 300. Longest Increasing Subsequence 最长递增子序列 (中等)

一、题目大意标签:动态规划https://leetcode.cn/problems/longest-increasing-subsequence给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是[2,3,7,101],因此长度为4。示例2:输入:nums=[0,1,0,3,2,3]输出:4示例3:输入:nums=[7,7,7,7,7,7,

【JS】3.无重复字符的最长子串

3.无重复字符的最长子串给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入:s="pwwkew"输出:3解释:因为无重复字符的最长子串是"wke",所以其长度为3。请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。提示:0s由英文字母、数字、符号和空格组成思路:弄个哈希表,表用来存放s字符串中每个ASCII码出现的下标位置,一开始先设置为空,即没有AS

leetcode 1143. Longest Commom Subsequence 最长公共子序列(中等)

一、题目大意标签:动态规划https://leetcode.cn/problems/longest-common-subsequence给定两个字符串 text1和 text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回0。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace"是"abcde"的子序列,但"aec"不是"abcde"的子序列。两个字符串的公共子序列是这两个字符串所共同拥有的子序列。示例1:输入:text1="abcde",text2="ace"输出:

【JS】3.无重复字符的最长子串

3.无重复字符的最长子串给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入:s="pwwkew"输出:3解释:因为无重复字符的最长子串是"wke",所以其长度为3。请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。提示:0s由英文字母、数字、符号和空格组成思路:弄个哈希表,表用来存放s字符串中每个ASCII码出现的下标位置,一开始先设置为空,即没有AS