1. 题目
读题
考查点
2. 解法
思路
代码逻辑
具体实现
// 定义一个类,用来计算两个字符串之间的编辑距离
public class EditDistance {
// 定义一个静态方法,接受两个字符串作为参数,返回它们之间的编辑距离
public static int editDistance(String str1, String str2) {
// 获取两个字符串的长度
int m = str1.length();
int n = str2.length();
// 创建一个二维数组,用来存储动态规划的结果
int[][] dp = new int[m + 1][n + 1];
// 初始化边界条件
for (int i = 0; i <= m; i++) {
dp[i][0] = i; // 第一列表示将 str1 的前 i 个字符转换成空字符串所需的操作次数
}
for (int j = 0; j <= n; j++) {
dp[0][j] = j; // 第一行表示将空字符串转换成 str2 的前 j 个字符所需的操作次数
}
// 遍历两个字符串,填充动态规划数组
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
// 如果当前字符相同,则不需要进行任何操作,编辑距离等于左上角的值
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1];
} else {
// 如果当前字符不同,则需要进行替换、插入或删除操作,编辑距离等于左上角、左边或上边的值中的最小值加一
dp[i][j] = Math.min(Math.min(dp[i - 1][j - 1], dp[i][j - 1]), dp[i - 1][j]) + 1;
}
}
}
// 返回最终结果,即右下角的值
return dp[m][n];
}
// 测试一下方法的效果
public static void main(String[] args) {
String str1 = "HJ52";
String str2 = "HJ53";
System.out.println("The edit distance between " + str1 + " and " + str2 + " is " + editDistance(str1, str2));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-07-27 Resouce Pool的理解