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]
相关推荐
a努力。1 分钟前
虾皮Java面试被问:JVM Native Memory Tracking追踪堆外内存泄漏
java·开发语言·jvm·后端·python·面试
这周也會开心1 分钟前
JVM-垃圾回收器
jvm·算法
橘颂TA1 分钟前
【剑斩OFFER】算法的暴力美学——力扣 844 题:比较含退格的字符串
数据结构·c++·算法·力扣·结构与算法
Kratzdisteln2 分钟前
【Python】Flask
开发语言·python·flask
cici158745 分钟前
基于正交匹配追踪(OMP)算法的信号稀疏分解MATLAB实现
数据库·算法·matlab
sa1002718 分钟前
基于Python的京东评论爬虫
开发语言·爬虫·python
Jeremy爱编码22 分钟前
leetcode热题组合总和
算法·leetcode·职场和发展
努力学算法的蒟蒻32 分钟前
day57(1.8)——leetcode面试经典150
算法·leetcode·面试
言之。32 分钟前
大模型 API 中的 Token Log Probabilities(logprobs)
人工智能·算法·机器学习
Cigaretter738 分钟前
Day 38 早停策略和模型权重的保存
python·深度学习·机器学习