【leetcode】72. (Hard) Edit Distance
阿新 • • 發佈:2018-11-19
解題思路:
DP
提交程式碼:
class Solution {
public int minDistance(String word1, String word2) {
int[][] dp=new int[word2.length()+1][word1.length()+1];
dp[0][0]=0;
for(int i=0;i<word1.length();i++)
dp[0][i+1]=i+1;
for(int i=0;i<word2.length(); i++)
dp[i+1][0]=i+1;
for(int i=0;i<word2.length();i++) {
for(int j=0;j<word1.length();j++) {
if(word1.charAt(j)==word2.charAt(i))
dp[i+1][j+1]=minValue(dp[i][j],dp[i+1][j]+1,dp[i][j+1]+1);
else
dp[i+1][j+1]=minValue(dp[i][j+1], dp[i+1][j],dp[i][j])+1;
}
}
return dp[word2.length()][word1.length()];
}
public int minValue(int num1,int num2,int num3) {
if(num1>num2)
num1=num2;
if(num1>num3)
num1=num3;
return num1;
}
}
執行結果: