Занятие 6. Справочник
Занятие 6. Справочник
Расстояние Левенштейна
static int memo[][]; public static int levenshtein(String word1, String word2) { int len1 = word1.length(); int len2 = word2.length(); memo = new int[len1 + 1][len2 + 1]; for (int i = 0; i <= len1; i++) { memo[i][0] = i; } for (int i = 0; i <= len2; i++) { memo[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)) { memo[i][j] = memo[i - 1][j - 1]; } else { int insert = memo[i][j - 1] + 1; int remove = memo[i - 1][j] + 1; int replace = memo[i - 1][j - 1] + 1; if ((insert <= remove) && (insert <= replace)) { memo[i][j] = insert; } else if ((remove <= insert) && (remove <= replace)) { memo[i][j] = remove; } else if ((replace <= remove) && (replace <= insert)) { memo[i][j] = replace; } } } } // result int result = memo[len1][len2]; return result; }