leetcode72. 编辑距离

leetcode72. 编辑距离

题目

思路

dp[i][j] 代表 word1i 位置转换成 word2j 位置需要最少步数,所以,

word1[i] == word2[j]dp[i][j] = dp[i-1][j-1]

word1[i] != word2[j]dp[i][j] = 1 + min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])

其中,dp[i-1][j-1] 表示替换操作,dp[i-1][j] 表示对word1插入,dp[i][j-1] 表示对word2插入。

注意,针对第一行,第一列要单独考虑,我们引入 '' 下图所示,初始化如下所示:

代码

python 复制代码
class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        dp = [[0] * (len(word2)+1) for _ in range(len(word1)+1)]
        for i in range(len(word1)+1):
            dp[i][0] = i
        for j in range(len(word2)+1):
            dp[0][j] = j
        for i in range(1, len(word1)+1):
            for j in range(1, len(word2)+1):
                if word1[i-1] == word2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = 1 + min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])
        return dp[-1][-1]
相关推荐
nervermore9902 分钟前
3.3 Python图形编程
python
zhengfei6113 分钟前
世界各地免费电视频道的 M3U 播放列表。
python
yyy(十一月限定版)4 分钟前
matlab矩阵的操作
算法·matlab·矩阵
努力学算法的蒟蒻21 分钟前
day58(1.9)——leetcode面试经典150
算法·leetcode·面试
心静财富之门33 分钟前
退出 for 循环,break和continue 语句
开发语言·python
txinyu的博客35 分钟前
map和unordered_map的性能对比
开发语言·数据结构·c++·算法·哈希算法·散列表
WJSKad123540 分钟前
YOLO11-FDPN-DASI实现羽毛球拍与球的实时检测与识别研究
python
幻云20101 小时前
Next.js之道:从入门到精通
人工智能·python
搞笑症患者1 小时前
压缩感知(Compressed Sensing, CS)
算法·最小二乘法·压缩感知·正交匹配追踪omp·迭代阈值it算法
0和1的舞者1 小时前
GUI自动化测试详解(三):测试框架pytest完全指南
自动化测试·python·测试开发·自动化·pytest·测试