1.概述
请注意区分子串和子序列的不同,给定两个字符串str1和str2,求两个字符串的最长公共子串。
动态规划空间压缩的技巧讲解
子串是必须连续的,子序列是可以不连续的。
2.分析
假设我们有2个子串如下
字符串A: aabcaac
字符串B: aaabccab
然后我们组成一个二维数组
我们现在来说说dp[row][col]的含义
: 字符串A的子串必须以row位置结尾,字符串B的子串必须以col位置结尾,的情况下,最长公共子串是多少
。
[0][0]
位置,两个都是a,所以这里的公共子串最长是1
[0][1]
位置,字符串A是a,字符串B是aa (第二个a),两者公共子串最长是1
[0][2]
位置,字