2024/9/29 多维dp 最后一题

This commit is contained in:
Cool 2024-09-30 01:55:17 +08:00
parent b08154b0ed
commit 58b2b1e113
1 changed files with 41 additions and 0 deletions

View File

@ -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];
}
}