博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 72. 编辑距离
阅读量:4115 次
发布时间:2019-05-25

本文共 1301 字,大约阅读时间需要 4 分钟。

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。

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

插入一个字符

删除一个字符
替换一个字符

示例 1:

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

示例 2:

输入:word1 = "intention", word2 = "execution"输出:5解释:intention -> inention (删除 't')inention -> enention (将 'i' 替换为 'e')enention -> exention (将 'n' 替换为 'x')exention -> exection (将 'n' 替换为 'c')exection -> execution (插入 'u')

思路

动态规划

一、定义 dp[i][j]

  1. dp[i][j] 代表 word1 中前 i 个字符,变换到 word2 中前 j 个字符,最短需要操作的次数
  2. 需要考虑 word1 或 word2 一个字母都没有,即全增加/删除的情况,所以预留 dp[0][j]dp[i][0]

二、状态转移

  1. 增,dp[i][j] = dp[i][j - 1] + 1
  2. 删,dp[i][j] = dp[i - 1][j] + 1
  3. 改,dp[i][j] = dp[i - 1][j - 1] + 1
  4. 按顺序计算,当计算 dp[i][j] 时,dp[i - 1][j]dp[i][j - 1]dp[i - 1][j - 1] 均已经确定了
  5. 配合增删改这三种操作,需要对应的 dp 把操作次数加一,取三种的最小
  6. 如果刚好这两个字母相同 word1[i - 1] = word2[j - 1] ,那么可以直接参考 dp[i - 1][j - 1] ,操作不用加一

三、代码

class Solution {
public int minDistance(String word1, String word2) {
int m = word1.length(); int n = word2.length(); int[][] dp = new int[m+1][n+1]; for(int i=1; i<=n; i++){
dp[0][i] = i; } for(int j=1; j<=m; j++){
dp[j][0] = j; } for(int i=1; i

:https://leetcode-cn.com/problems/edit-distance/solution/edit-distance-by-ikaruga/

转载地址:http://dpwpi.baihongyu.com/

你可能感兴趣的文章
「译」在 python 中,如果 x 是 list,为什么 x += "ha" 可以运行,而 x = x + "ha" 却抛出异常呢?...
查看>>
谷歌阅读器将于2013年7月1日停止服务,博客订阅转移到邮箱
查看>>
浅谈JavaScript的语言特性
查看>>
LeetCode第39题思悟——组合总和(combination-sum)
查看>>
LeetCode第43题思悟——字符串相乘(multiply-strings)
查看>>
LeetCode第44题思悟——通配符匹配(wildcard-matching)
查看>>
LeetCode第45题思悟——跳跃游戏(jump-game-ii)
查看>>
LeetCode第46题思悟——全排列(permutations)
查看>>
LeetCode第47题思悟—— 全排列 II(permutations-ii)
查看>>
LeetCode第48题思悟——旋转图像(rotate-image)
查看>>
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>
飞机换乘次数最少问题的两种解决方案
查看>>
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
WPF实现蜘蛛纸牌游戏
查看>>