2024/9/29 多维dp 最后一题
This commit is contained in:
parent
b08154b0ed
commit
58b2b1e113
|
@ -0,0 +1,41 @@
|
||||||
|
package com.cool.hot100.multi_dp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created with IntelliJ IDEA.
|
||||||
|
*
|
||||||
|
* @Author: Cool
|
||||||
|
* @Date: 2024/09/30/1:53
|
||||||
|
* @Description: 72. 编辑距离
|
||||||
|
* Hard 2 看似mid实则hard
|
||||||
|
* Level 6
|
||||||
|
* DayNumber 3
|
||||||
|
* @Link https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-100-liked
|
||||||
|
*/
|
||||||
|
public class Num72 {
|
||||||
|
public int minDistance(String word1, String word2) {
|
||||||
|
int nLen = word1.length();
|
||||||
|
int mLen = word2.length();
|
||||||
|
if (nLen * mLen == 0) {
|
||||||
|
return mLen + nLen;
|
||||||
|
}
|
||||||
|
int[][] dp = new int[nLen + 1][mLen + 1];
|
||||||
|
for (int i = 0; i < nLen + 1; i++) {
|
||||||
|
dp[i][0] = i;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < mLen + 1; i++) {
|
||||||
|
dp[0][i] = i;
|
||||||
|
}
|
||||||
|
for (int i = 1; i < nLen + 1; i++) {
|
||||||
|
for (int j = 1; j < mLen + 1; j++) {
|
||||||
|
int leftToRight = dp[i - 1][j];
|
||||||
|
int rightToLeft = dp[i][j - 1];
|
||||||
|
int leftAndRight = dp[i - 1][j - 1];
|
||||||
|
if (word1.charAt(i - 1) == word2.charAt(j - 1)) {
|
||||||
|
leftAndRight--;
|
||||||
|
}
|
||||||
|
dp[i][j] = Math.min(leftAndRight, Math.min(leftToRight, rightToLeft)) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dp[nLen][mLen];
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue