【Leetcode Daily】1143最长公共子序列
题目浅析
想查看原题可以点击题目链接。
简单地说,就是找到两个字符串的最长公共子序列(具体含义请看原题)长度。
思路分享
这是线性 DP 的经典题目,子序列由于是可以选择性的删除中间部分,所以计算两个字符串的公共子序列,可以分为多个子问题,具体分析如下:
对于两个字符串,每分别选的两个字符各有选和不选两种情况,也就是四种情况。在相等的情况下,肯定是两个都选好;不等时则两边各选一次。两边都不选一定不如上面三种情况。
比如,有长 n、m 的两个字符串的最长公共子序列就是下面的子情况推导出来的:1. n-1、m;2. n、m-1;3. n-1、m-1. 前两个是字符匹配失败的场景,3 是字符相等的场合
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!