题解 | #牛群编号变更#
牛群编号变更
https://www.nowcoder.com/practice/9295f0f796b34793832710d5c939a619
import java.util.*;
public class Solution {
/**
常规dfs和动态规划,各位看官可自行选择
*/
public static int minDistance (String word1, String word2) {
int len1 = word1.length();
int len2 = word2.length();
int[][] dp = new int[len1 + 1][len2 + 1];
dp[0][0] = 0;
for (int i = 1; i <= len1; i++) {
dp[i][0] = i;
}
for (int i = 1; i <= len2; i++) {
dp[0][i] = i;
}
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (word1.charAt(i - 1) == word2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1];
} else {
dp[i][j] = 1 + Math.min(dp[i][j - 1], dp[i - 1][j]);
}
}
}
return dp[len1][len2];
}
StringBuilder s1 = new StringBuilder();
StringBuilder s2 = new StringBuilder();
public int minDistance2 (String word1, String word2) {
s1.append(word1);
s2.append(word2);
return dfs(s1, s2);
}
public int dfs(StringBuilder s1, StringBuilder s2) {
if (s1.length() != 0 && s2.length() == 0 || s1.length() == 0 &&
s2.length() != 0) {
return s1.length() == 0 ? s2.length() : s1.length();
}
if (s1.length() == 0 && s2.length() == 0) {
return 0;
}
if (s1.charAt(0) == s2.charAt(0)) {
return dfs(s1.deleteCharAt(0), s2.deleteCharAt(0));
} else {
return 1 + dfs(s1.deleteCharAt(0), s2);
}
}
}

