1. 定义DP状态(核心思路)
问题分析:
将 word1
转换为 word2
,每个操作对应状态转移。定义 dp[i][j]
表示将 word1[0..i-1]
转换为 word2[0..j-1]
的最小操作数。
2. 初始化DP表
目的:处理空字符串的边界情况。
3. 填充DP表(状态转移方程)
状态转移逻辑:
- 若
word1[i-1] == word2[j-1]
:无需操作,直接继承左上方值 →dp[i][j] = dp[i-1][j-1]
- 否则:取三种操作的最小值 + 1
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
class Solution {
public:
int minDistance(string