1143 最长公共子序列
LeetCode: 最长公共子序列
首先需要先理解LCS是具有最优子结构的,证明过程可以参考
算法导论(第四版)
思路如下
dp[i][j]表示text1[0,i] 和 text2[0,j]的LCS
text[i] 与 text[j] 两个字符
存在两个状态相等或者不相等
text[i] == text[j] 一定为LCS的一部分 则dp[i][j] = dp[i-1][j-1] + 1
text[i] != text[j] text[i] 或者 text[j] 可能有一个是也可能都不是
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) 取最大值
class Solution {
public:
int longestCommonSubsequence(string text1, string text2) {
// 加入或不加入 dp[i][j]表示(0,i) 与(0,j)的LCS长度
// text1[i] == text2[j] 一定为LCS的元素 dp[i][j] = dp[i-1][j-1]
// text1[i]