1.概述
请注意区分子串和子序列的不同,给定两个字符串str1和str2,求两个字符串的最长子序列。
动态规划空间压缩的技巧讲解
子串是必须连续的,子序列是可以不连续的。
上一篇文章:【算法】空间压缩技巧、两个字符串的最长公共子串
2.分析
假设我们有2个子串如下
字符串A: aabcaac
字符串B: aaabccab
然后我们组成一个二维数组
我们现在来说说dp[row][col]
的含义: 字符串A的[0到row]在这个子串,和字符串B的[0到col]在这个子串,最长公共子序列是多少。注意此时的最长公共子序列未必是以row结尾或者以col结尾的。
这个表填写完毕,那么最右下角就是答案,字符串A的完整长度与字符串B的完整