首页 > 其他分享 >最长公共子串

最长公共子串

时间:2022-11-10 23:44:47浏览次数:32  
标签:子串 填入 公共 序列 最长 row

最长公共子序列和最长公共子串区别

最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别:

子串要求在原字符串中是连续的,而子序列则只需保持相对顺序一致,并不要求连续。

例如  X = {a, Q, 1, 1}; Y = {a, 1, 1, d, f}

那么,{1, 1}是X和Y的最长公共字串。

 

思路

我们的目的是寻找两个顺序绝对一致的序列

所以我们需要构建一个二维数组进行统计,记录遍历的时候他们相同的地方

设有这样的两个序列:

{A,A,C,G,T,T,A,G}

{A,C,G,T,A}

 

 第一行的意思可以看作空和空.空和A。。。的最长子序列都为0

从第二行开始,如果相同就将左上角的值复制加一填入,所以这里就填上   1(0+1)

 

 到C的时候,A和C是不一样的,直接填入0

 

 到下一个A又相同,就把左上角的值加一填入

 

 之后不一样的都填入0

到第二行时,C与C一样了,填入左上角的元素值加一,也就是1+1= 2,填入2

 

 

填完后得到

 

 很明显表中的最大值就是他的最长子串

状态转移方程代码

 通过以上的分解后,我们可以得到这样一个状态转移方程

if(a===b){
table[row][col] = table[row - 1][col - 1] + 1;//如果一样,我们找到他斜上角的那个值进行加一之后赋值
} else {
table[row][col] = 0; //如果不相同,我们就填入0
}

标签:子串,填入,公共,序列,最长,row
From: https://www.cnblogs.com/kuailest/p/16879235.html

相关文章

  • 查找字符串数组中的最长公共前缀
     import java.util.*;public class Solution {    /**     *      * @param strs string字符串一维数组      * @return string......
  • LIS 最长递增子序列 三种求解方式
    1dp2二分3indextree 题目描述给出一个列表如[[6,7,],[5,4],[3,2]],表示木块的长和宽,当木块的长和宽不大于另个木块的长和宽时,就可以放在上面,此外数组还可以左右翻......
  • 128.最长连续序列
    给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例1:输入:nums......
  • 76.最小覆盖子串
    给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。注意:对于 t 中......
  • CSU 1807 最长上升子序列~
    [​​Submit​​​][​​​Status​​​][​​​WebBoard​​]Description1,p2,…,pn.1,p2,…,pn 互不相同(即p1,p2,…,pn......
  • HDU 3608 最长回文
    ProblemDescription给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba,abba等 Inp......
  • 最长公共子序列问题
    最长公共子序列和最长公共子串区别最长公共子串(LongestCommonSubstring)与最长公共子序列(LongestCommonSubsequence)的区别:子串要求在原字符串中是连续的,而子序列则只......
  • 基于VUEX的公共存储器store的快速上手流程
    vuex的快速安装与使用​​store公共存储器​​​​state.js添加数据元​​​​mutations.js创建一个方法​​​​在组件中提交:​​​​在组件中使用:​​store公共存储器在使......
  • P4555 最长双回文串 解题报告
    看到回文串,于是就想到了马拉车。马拉车可以帮我们求出每个\(i\)的最大扩展距离,容易得出,双回文串就是两个回文串拼一起。当然,两个回文串必须要相交,不然形不成一个字符串......
  • AcWing 896.最长上升子序列Ⅱ
    题目链接:http://www.acwing.com/problem/content/898/不像是dp,更像是贪心相对于数据小的上升子序列问题,此题用过的二分后的时间复杂度为nlogn。在本题中首先需要明白:......