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