1 | 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 |
示例 :
输入:text1 = “fish”, text2 = “hish”
输出:3
解释:最长公共子序列是 “ish”,它的长度为 3。
说明:
1 <= text1.length <= 1000
1 <= text2.length <= 1000
- 输入的字符串只含有小写英文字符。
思路
动态转移方程
最长公共子序列问题时一个典型的二维动态规划求解的问题,子序列类型的问题,穷举出所有可能的结果都不容易,而动态规划算法做的就是穷举 + 剪枝。
第一步,一定要明确 dp
数组的含义。其中,dp[i][j]
的含义是:对于 s1[1..i]
和 s2[1..j]
,它们的 LCS 长度是 dp[i][j]
。