欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 力扣72题编辑距离

力扣72题编辑距离

2025/3/10 12:40:33 来源:https://blog.csdn.net/qq_40603125/article/details/146137161  浏览:    关键词:力扣72题编辑距离

题目

在这里插入图片描述

原理

三个操作对应的操作次数分别是:

  • 插入:在原本的次数上 + 1
  • 删除:在原本的次数上+1
  • 替换:如果两个位置的字符串一样,则等于原本的次数,
    如果不等,在原本的次数上+1

去三者的最小值,就是最小的编辑次数

示例

在这里插入图片描述

在这里插入图片描述

代码

答案是2

package org.example;public class _72_编辑距离 {public static void main(String[] args) {String word1 = "horse";String word2 = "home";System.out.println(minDistance(word1, word2));}private static int minDistance(String word1, String word2) {// 分别获取两个字符串的长度int m = word1.length();int n = word2.length();// 创建一个二维数组dp,dp[i][j]表示word1的前i个字符转换成word2的前j个字符所需要的最少操作次数int[][] dp = new int[m + 1][n + 1];// 初始化dp数组// 初始化第一行for (int i = 0; i <= m; i++) {dp[i][0] = i;}// 初始化第一列for (int j = 0; j <= n; j++) {dp[0][j] = j;}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {// 获取左\上\左上三个位置的值int left = dp[i - 1][j] + 1;int up = dp[i][j - 1] + 1;int leftUp = dp[i - 1][j - 1]; // 此时不需要+1,默认是相等的情况// 如果word1的第i个字符不等于word2的第j个字符,需要+1if (word1.charAt(i - 1) != word2.charAt(j - 1)) {leftUp++;}// 获取三个位置的最小值dp[i][j] = Math.min(left, Math.min(up, leftUp));}}// 返回word1的前m个字符转换成word2的前n个字符所需要的最少操作次数return dp[m][n];}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词