给你两个单词 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]表示word1的前i个字符替换为word2的前j个字符需要多少步

如果word1的第i个字符与word2的第j个字符相同

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

否则选择增删改中步骤较小的一步

dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+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=0;i<=m;i++){

dp[i][0] = i;

}

for(int i=0;i<=n;i++){

dp[0][i] = i;

}

for(int i=1;i<=m;i++){

for(int j=1;j<=n;j++){

if(word1.charAt(i-1)==word2.charAt(j-1)){

dp[i][j] = dp[i-1][j-1];

}else{

dp[i][j] = Math.min(Math.min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;

}

}

}

return dp[m][n];

}

}

Leetcode--72.编辑距离(java)相关推荐

  1. Java实现 LeetCode 72 编辑距离

    72. 编辑距离 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字 ...

  2. [leetcode] 72. 编辑距离(二维动态规划)

    72. 编辑距离 再次验证leetcode的评判机有问题啊!同样的代码,第一次提交超时,第二次提交就通过了! 此题用动态规划解决. 这题一开始还真难到我了,琢磨半天没有思路.于是乎去了网上喵了下题解看 ...

  3. LeetCode 72. 编辑距离(DP)

    1. 题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示 ...

  4. 2022-3-22 Leetcode 72.编辑距离

    class Solution {public:int minDistance(string word1, string word2) {int n = word1.length();int m = w ...

  5. 123. Leetcode 72. 编辑距离 (动态规划- 字符串系列)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示word1[:i]的单词与word2[:j]单词之间的最小编辑距离 步骤二.推断状态方程: 在确定递推公式的时候,首先要考虑清楚编辑的几 ...

  6. LeetCode 72.编辑距离(动态规划)

    编辑距离 针对两个字符串(如英文字母)的差异程度的量化测量,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串. 编辑距离应用 一.可应用于NLP,如拼写检查可以根据一个拼错的字和其他正 ...

  7. leetcode 72. 编辑距离

    /***** 定义状态: DP[i][j]其中i表示word1前i个字符,j表示Word2前i个字符 DP[i][j]表示单词1前i个字符匹配单词2前j个字符,最少变换次数: 状态转移: for i: ...

  8. [leetcode] 72.编辑距离

    给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: ...

  9. LeetCode 72 编辑距离

    思路:动态规划 class Solution { public:int minDistance(string word1, string word2) { int dp[501][501]; for( ...

  10. ⭐算法入门⭐《动态规划 - 串匹配》困难02 —— LeetCode 72. 编辑距离

最新文章

  1. 逆矩阵 与行列式的关系
  2. C++读取文件夹中所有文件的路径,包含子文件夹
  3. SQL Performance Analyzer SPA常用脚本汇总
  4. 龙族幻想最新东京机器人位置_龙族幻想:最强“人形兵器”格斗家降临卡塞尔学院...
  5. Android OpenGL/Gralloc到framebuffer和LCD流程(六)
  6. 2. MFC编程——各函数作用
  7. Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系
  8. c语言除法连续运算,单片机C语言快速精度除法方案
  9. FDD与TDD工作原理
  10. word中公式和文字不在一条水平线上
  11. 使用 hydra 破解路由器密码
  12. DELPHI 7 LITE v3.0 [SP1.1 Integrated] (安装版含绿色版)(可选D2007RTL)(2008-5-29)
  13. 爬虫之爬取图片(运用了bs4和正则查取)
  14. FOR ALL ENTRIES
  15. main cannot be resolved or is not a field
  16. 机器人战争显示服务器连接,战争机器人总是显示无法连接网络
  17. mysql允许null_Mysql:允许Null意思
  18. 解决adb无法连接夜神模拟器的问题
  19. 设计模式之一工厂模式
  20. LeetCode1079题:活字印刷——Python递归与迭代解法

热门文章

  1. LeetCode 253. 会议室 II(贪心+优先队列)
  2. LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
  3. springboot设置运行内存_Docker 如何运行多个 Springboot?
  4. 关于计算机书籍的收集与整理(一)
  5. python中的元组及注意事项
  6. Python基础(五)--函数
  7. sql server排序慢_SQL 查询调优之 where 条件排序字段以及 limit 使用索引的奥秘
  8. ACL'21 | 弱标签的垃圾数据,也能变废为宝!
  9. 数据还是模型?人类知识在深度学习里还有用武之地吗?
  10. BAT面试进阶:最全Memcached面试30题含答案