美文网首页
718. 最长公共子串

718. 最长公共子串

作者: 乘瓠散人 | 来源:发表于2021-04-11 09:17 被阅读0次

题目:给定两个整数数组AB,返回两个数组中最长的公共子串的长度。
思路:注意和最长公共子序列的思想区分,子串要求连续。定义dp[i][j]表示A[i:]B[j:]最长公共前缀(以A[i]/B[j]为起始点的子串)的长度,如果A[i]==B[j],则dp[i][j] = dp[i+1][j+1] + 1,否则dp[i][j] = 0,答案即为所有dp[i][j]中的最大值。

int findLength(vector<int>& A, vector<int>& B){
    int m = A.size();
    int n = B.size();
    int dp[m+1][n+1]; //dp[i][j]表示字符串A[i:]和B[j:]的最长公共前缀的长度
    for(int i=0; i<=m; i++) dp[i][n] = 0;
    for(int j=0; j<=n; j++) dp[m][j] = 0;
    int max_res = 0;

    for(int i=m-1; i>=0; i--){
        for(int j=n-1; j>=0; j--){
            if(A[i]==B[j]){
                dp[i][j] = dp[i+1][j+1]+1;
            }else{
                dp[i][j] = 0;
            }
            if(dp[i][j]>max_res) max_res = dp[i][j];
        }
    }
    return max_res;
}

相关文章

  • 718. 最长公共子串

    题目:给定两个整数数组A和B,返回两个数组中最长的公共子串的长度。思路:注意和最长公共子序列的思想区分,子串要求连...

  • 最长公共子序列和最长公共子串

    最长公共子序列和最长公共子串区别 最长公共子串(Longest CommonSubstring)和最长公共子序列(...

  • 最长重复子数组

    718. 最长重复子数组

  • 子串 子序列 总结

    最长公共子串 子串的要求比子序列严格,所以可以讨论子串的终点 最长公共子序列 DP解 递归+memo 最长公共回文...

  • LCS问题

    LCS问题包括最长公共子序列和最长公共子串,其中,最长公共子串要求必须连续。 对于二者的求解方式 最长公共子序列:...

  • 算法笔记之动态规划

    LEETCODE 718. 最长重复子数组 问题描述:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长...

  • 最长公共 / 对称字串

    求最长对称字串是求最长公共子串的变形.. (๑˘ ˘๑) 最长公共子串 Longest Common Subseq...

  • 字符串算法

    最长公共前缀 最长回文串 最长回文子序列 最长公共子串 反转单词顺序列 反转字符串 字符串转数字 IP-int互转

  • 06-18:刷题综合一:动态规划

    1、最长公共子串 牛客网:最长公共子串 https://www.nowcoder.com/practice/f33...

  • 每天一道算法题18

    【最长公共子序列,子串】给定两个字符串上str1 和 str2, 求两个字符的最长公共子序列和最长公共子串。 最长...

网友评论

      本文标题:718. 最长公共子串

      本文链接:https://www.haomeiwen.com/subject/edaikltx.html