(对比最长公共连续子序列)
暴力n3
用dp来优化
简书:https://www.jianshu.com/p/730a78212c65
CSDN:https://blog.csdn.net/ten_sory/article/details/79857531
定义dp[i][j]:字符串s1和s2的最长公共连续子串的最后一个字符与这两个字符串的最后一个字符相等的情况下,这个LCS的长度,状态转移方程为:
注意观察,A[i]!=B[j]的情况下,dp[i][j]也等于0,这是子序列和子串在状态转移方程上的区别。
那么,我们通过两层循环,计算出dp[][]的值,然后找到其中最大的值,就是LCS的长度了。
LCS的长度对应的dp[][]的两个下标为LCS末尾字符分别在字符串A和B中的下标,可以利用这个很容易地找到LCS的具体值,这貌似是最长公共子串比最长公共子序列稍微简单的地方。