2 public class LevenshteinDistance
{
10 private static int minimum(int a
, int b
, int c
) {
11 return Math
.min(Math
.min(a
, b
), c
);
20 public static int computeLevenshteinDistance(CharSequence lhs
, CharSequence rhs
) {
21 int[][] distance
= new int[lhs
.length() + 1][rhs
.length() + 1];
23 for (int i
= 0; i
<= lhs
.length(); i
++)
25 for (int j
= 1; j
<= rhs
.length(); j
++)
28 for (int i
= 1; i
<= lhs
.length(); i
++)
29 for (int j
= 1; j
<= rhs
.length(); j
++)
30 distance
[i
][j
] = minimum(
31 distance
[i
- 1][j
] + 1,
32 distance
[i
][j
- 1] + 1,
33 distance
[i
- 1][j
- 1] + ((lhs
.charAt(i
- 1) == rhs
.charAt(j
- 1)) ?
0 : 1));
35 return distance
[lhs
.length()][rhs
.length()];