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 word1, string word2) {
int m = word1.size(), n = word2.size();
vector<
订阅专栏 解锁全文
4719

被折叠的 条评论
为什么被折叠?



