#刷题交流#
day12: DNA序列编辑距离
解题思路:
1. 定义状态:设 dp[i][j] 表示将 dna1[0..i-1] 转换成 dna2[0..j-1] 所需的最少编辑步骤。
2. 状态转移:如果 dna1[i-1] == dna2[j-1],那么 dp[i][j] = dp[i-1][j-1],因为不需要任何编辑。
如果 dna1[i-1] != dna2[j-1],我们有三种操作:
插入:在 dna1 中插入一个字符,操作后变成 dp[i][j-1] + 1。
删除:删除 dna1[i-1] 中的一个字符,操作后变成 dp[i-1][j] + 1。
替换:将 dna1[i-1] 替换为 dna2[j-1],操作后变成 dp[i-1][j-1] + 1。
初始化:dp[0][j] 表示将空字符串转换为 dna2[0..j-1],需要 j 次插入;dp[i][0] 表示将 dna1[0..i-1] 转换为空字符串,需要 i 次删除。
返回结果:最终的编辑距离是 dp[m][n],其中 m 和 n 分别是 dna1 和 dna2 的长度。
解毕.