// Implementation of the Levenshtein algorithm for distance between two strings // Contributed to the Public Domain for use by Digital Mars // See http://en.wikipedia.org/wiki/Levenshtein_distance for a description int lev_dist(char[] s, char[] t) { int m = s.length; int n = t.length; int[][] matrix = new int[][](m + 1, n + 1); int i, j; int cost, min; for (i = 0; i <= m; i++) { matrix[i][0] = i; } for (j = 0; j <= n; j++) { matrix[0][j] = j; } for (i = 1; i <= m; i++) { for (j = 1; j <= n; j++) { if (s[i - 1] == t[j - 1]) { cost = 0; } else { cost = 1; } min = matrix[i - 1][j] + 1; if (min > matrix[i][j - 1] + 1) { min = matrix[i][j - 1] + 1; } if (min > matrix[i - 1][j - 1] + cost) { min = matrix[i - 1][j - 1] + cost; } matrix[i][j] = min; } } return matrix[m][n]; }