优化版编辑距离算法
public static int minDistance(String str, String str1) {
int len = str.length(), len1 = str1.length();
// 预处理
char[] arr1 = str.toCharArray();
char[] arr2 = str1.toCharArray();
// 动态规划数组
int[] dp = new int[len1 + 1];
for (int j = 0; j <= len1; j++) dp[j] = j;
for (int i = 1; i <= len; i++) {
int prevDiagonal = dp[0];
dp[0] = i;
char c1 = arr1[i-1];
for (int j = 1; j <= len1; j++) {
int cost = (c1 == arr2[j-1]) ? 0 : 1;
int newVal = dp[j] + 1;
newVal = newVal < dp[j-1] + 1 ? newVal : dp[j-1] + 1;
newVal = newVal < prevDiagonal + cost ? newVal : prevDiagonal + cost;
prevDiagonal = dp[j];
dp[j] = newVal;
}
}
return dp[len1];
}
ES自定义评分脚本

最低0.47元/天 解锁文章
636

被折叠的 条评论
为什么被折叠?



