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]
相关推荐
会叫的恐龙3 分钟前
C++ 核心知识点汇总(第六日)(字符串)
c++·算法·字符串
小糯米60113 分钟前
C++顺序表和vector
开发语言·c++·算法
阔皮大师23 分钟前
INote轻量文本编辑器
java·javascript·python·c#
小法师爱分享27 分钟前
StickyNotes,简单便签超实用
java·python
深蓝电商API27 分钟前
处理字体反爬:woff字体文件解析实战
爬虫·python
开源技术29 分钟前
Claude Opus 4.6 发布,100万上下文窗口,越贵越好用
人工智能·python
We་ct34 分钟前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript
Lionel68939 分钟前
分步实现 Flutter 鸿蒙轮播图核心功能(搜索框 + 指示灯)
算法·图搜索算法
张3蜂41 分钟前
深入理解 Python 的 frozenset:为什么要有“不可变集合”?
前端·python·spring
小妖66643 分钟前
js 实现快速排序算法
数据结构·算法·排序算法