Here you can find the source of levenshteinDistance(String s1, String s2)
I shamefully stole this from: http://rosettacode.org/wiki/Levenshtein_distance#Java --Gabor
public static int levenshteinDistance(String s1, String s2)
//package com.java2s; public class Main { /** I shamefully stole this from: http://rosettacode.org/wiki/Levenshtein_distance#Java --Gabor */ public static int levenshteinDistance(String s1, String s2) { s1 = s1.toLowerCase();/* www . ja va 2s.c om*/ s2 = s2.toLowerCase(); int[] costs = new int[s2.length() + 1]; for (int i = 0; i <= s1.length(); i++) { int lastValue = i; for (int j = 0; j <= s2.length(); j++) { if (i == 0) costs[j] = j; else { if (j > 0) { int newValue = costs[j - 1]; if (s1.charAt(i - 1) != s2.charAt(j - 1)) newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1; costs[j - 1] = lastValue; lastValue = newValue; } } } if (i > 0) costs[s2.length()] = lastValue; } return costs[s2.length()]; } public static <E> int levenshteinDistance(E[] s1, E[] s2) { int[] costs = new int[s2.length + 1]; for (int i = 0; i <= s1.length; i++) { int lastValue = i; for (int j = 0; j <= s2.length; j++) { if (i == 0) costs[j] = j; else { if (j > 0) { int newValue = costs[j - 1]; if (!s1[i - 1].equals(s2[j - 1])) newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1; costs[j - 1] = lastValue; lastValue = newValue; } } } if (i > 0) costs[s2.length] = lastValue; } return costs[s2.length]; } }