lintcode 最长公共子串

作者: yzawyx0220 | 来源:发表于2017-01-13 11:09 被阅读86次

给出两个字符串,找到最长公共子串,并返回其长度。
注意事项
子串的字符应该连续的出现在原字符串中,这与子序列有所不同。
样例
给出A=“ABCD”,B=“CBCE”,返回 2
题目链接:http://www.lintcode.com/zh-cn/problem/longest-common-substring/
最长公共子串和最长公共子序列不同地方在于子串必须连续的,而子序列可以不连续。这里依然建立二维数组,dp[i][j]表示的是A的前i段和B的前j段包括A[i-1]和B[j-1]在内的公共子串,因此,如果A[i-1]不等于B[j-1],则dp[i][j]等于0。

class Solution {
public:    
    /**
     * @param A, B: Two string.
     * @return: the length of the longest common substring.
     */
    int longestCommonSubstring(string &A, string &B) {
        // write your code here
        int m = A.size(),n = B.size();
        vector<vector<int> > dp(m + 1,vector<int>(n + 1,0));
        int res = 0;
        for (int i = 1;i <= m;i++) {
            for (int j = 1;j <= n ;j++) {
                if (A[i - 1] == B[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
                else dp[i][j] = 0;
                res = max(res,dp[i][j]);
            }
        }
        return res;
    }
};

相关文章

  • 子序列

    最长公共子序列(LCS)(lintcode 77) 描述:给出两个字符串,找到最长公共子序列(LCS),返回LCS...

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

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

  • lintcode 最长公共子串

    给出两个字符串,找到最长公共子串,并返回其长度。注意事项子串的字符应该连续的出现在原字符串中,这与子序列有所不同。...

  • 子串 子序列 总结

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

  • LCS问题

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

  • 最长公共 / 对称字串

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

  • 字符串算法

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

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

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

  • lintcode 79. 最长公共子串

    难度:中等 1. Description 2. Solution 动态规划入门题 python3 3. Refer...

  • 每天一道算法题18

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

网友评论

    本文标题:lintcode 最长公共子串

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