private float calcLevenDistance(String s, String t) { int n = s.Length; int m = t.Length; if (n == 0) { return(m); } if (m == 0) { return(n); } float[][] d = new float[n + 1][]; for (int i = 0; i < n + 1; i++) { d[i] = new float[m + 1]; } for (int i = 0; i <= n; i++) { d[i][0] = i; } for (int j = 0; j <= m; j++) { d[0][j] = j; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { float cost = dCostFunc.getCost(s, i - 1, t, j - 1); d[i][j] = MathFuncs.min3(d[i - 1][j] + 1.0F, d[i][j - 1] + 1.0F, d[i - 1][j - 1] + cost); } } return(d[n][m]); }