当前位置: 首页 > news >正文

LeetCode 72. 编辑距离(Edit Distance)| 动态规划详解

72. 编辑距离

📘 题目描述

给你两个单词 word1word2,请计算将 word1 转换为 word2 所需的最少操作数。

你可以对一个单词进行以下三种操作:

  • 插入一个字符

  • 删除一个字符

  • 替换一个字符

✅ 示例 

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (替换 h 为 r)
rorse -> rose (删除 r)
rose -> ros (删除 e)

🔍 解题思路:动态规划(DP)

✅ 状态定义

dp[i][j] 表示将 word1[0:i] 转换为 word2[0:j] 的最小操作数。

✅ 状态转移方程

  • 如果 word1[i - 1] == word2[j - 1],当前字符相等,不需要额外操作:

    dp[i][j] = dp[i - 1][j - 1]
    
  • 否则,取三种操作的最小值:

dp[i][j] = min(dp[i - 1][j] + 1,     # 删除 word1[i - 1]dp[i][j - 1] + 1,     # 插入 word2[j - 1]dp[i - 1][j - 1] + 1  # 替换 word1[i - 1] 为 word2[j - 1]
)

✅ 边界初始化

  • dp[0][j] = j:将空字符串变成 word2 的前 j 个字符,需插入 j 次。

  • dp[i][0] = i:将 word1 的前 i 个字符变为空字符串,需删除 i 次。

💻 Python代码实现 

class Solution:def minDistance(self, word1: str, word2: str) -> int:m, n = len(word1), len(word2)dp = [[0] * (n + 1) for _ in range(m + 1)]# 初始化边界for i in range(m + 1):dp[i][0] = ifor j in range(n + 1):dp[0][j] = j# 状态转移for i in range(1, m + 1):for j in range(1, n + 1):if word1[i - 1] == word2[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:dp[i][j] = min(dp[i - 1][j] + 1,     # 删除dp[i][j - 1] + 1,     # 插入dp[i - 1][j - 1] + 1  # 替换)return dp[m][n]

🧠 图解示意 

假设:
word1 = "horse"word2 = "ros"

ros
0123
h1123
o2212
r3222
s4332
e5443

最终答案是 dp[5][3] = 3

⏱️ 时间 & 空间复杂度 

项目复杂度
时间复杂度O(m * n)
空间复杂度O(m * n)

 

相关文章:

  • 【推荐算法课程二】推荐算法介绍-深度学习算法
  • 日语语法学习
  • 模型合并(model merge)
  • CC工具箱使用指南:【面要素四至】
  • 报表工具顶尖对决系列—关联过滤
  • /proc/<pid>/maps文件格式详解
  • 声学成像仪在电力行业的应用品牌推荐
  • JavaWeb期末速成 Servlet
  • [C++11] : 谈谈包装器和lambda表达式,仿函数,bind的坑
  • Ntfs!NtfsVolumeCheckpointDpc函数分析到调用Ntfs!NtfsCheckpointAllVolumes函数
  • ubuntu 挂载问题
  • 【51单片机】6. 定时器、按键切换流水灯时钟Demo
  • Harbor 2.12.2 and 2.12.3 初始化密码错误
  • 风控系统中,要调用第三方服务获取信息,很慢,如何解决?
  • Pytorch中view函数详解和工程实战示例
  • Vue + element实现电子围栏功能, 根据省市区选择围栏, 自定义围栏 ,手动输入地名围栏, 保存围栏,清除围栏,加载围栏,批量检测标点是否在围栏内。
  • 杭州电商代运营公司排名前十
  • 网络的那些事——初级——路由策略
  • FastDFS 分布式存储
  • Vue 3.6前瞻:响应式性能革命与Vapor模式展望
  • 傻瓜做网站/百度seo搜索引擎优化
  • 腾讯网站建设方案/百度指数手机版
  • 温州市手机网站制作哪家好/网络营销工作内容
  • 做网站还需要续费/广州百度seo优化排名
  • 阿里云企业网站怎么收费/百度搜索下载
  • 青岛网站建设 百度/搜索引擎seo外包