class Solution {
public int minDistance(String word1, String word2) {
int n1 = word1.length();
int n2 = word2.length();
//当有空串时
if(n1 == 0 && n2 == 0) return 0;
if(n1 == 0) return n2;
if(n2 == 0) return n1;
int[][] dp = new int [n1 + 1][n2 + 1];
//设置初始状态
for(int i = 1; i <= n1; i++){
dp[i][0] = i;
}
for(int i = 1; i <= n2; i++){
dp[0][i] = i;
}
for(int i = 1; i <= n1; i++){
for(int j = 1; j <= n2; j++){
//在i位置加与j位置相同的元素
int res1 = dp[i - 1][j] + 1;
//在j位置加与i位置相同的元素
int res2 = dp[i][j - 1] + 1;
int res3;
//i位置和j位置相同,不用变换
if(word1.charAt(i - 1) == word2.charAt(j - 1)){
res3 = dp[i - 1][j - 1];
}
//不同时需要变换
else{
res3 = dp[i - 1][j - 1] + 1;
}
dp[i][j] = Math.min(res1, Math.min(res2, res3));
}
}
return dp[n1][n2];
}
}
leetcode 72.编辑距离 (动态规划)
于 2023-03-20 14:41:18 首次发布
该代码实现了一个计算两个字符串`word1`和`word2`之间最小编辑距离的算法。它使用了动态规划的方法,初始化二维dp数组,并通过比较字符串中对应位置的字符来更新状态,最终返回dp数组的最后一个元素,即两字符串的最小编辑距离。
摘要由CSDN通过智能技术生成