Here you can find the source of levenshteinDistance(String x, String y)
static int levenshteinDistance(String x, String y)
//package com.java2s; //License from project: Open Source License public class Main { static int levenshteinDistance(String x, String y) { int n = x.length(); // length of s int m = y.length(); // length of t if (n == 0) return m; if (m == 0) return n; int p[] = new int[n + 1]; //'previous' cost array, horizontally int d[] = new int[n + 1]; // cost array, horizontally int _d[]; //placeholder to assist in swapping p and d // indexes into strings s and t int i; // iterates through s int j; // iterates through t char t_j; // jth character of t int cost; // cost for (i = 0; i <= n; i++) { p[i] = i;/*w w w.ja va2 s.c o m*/ } for (j = 1; j <= m; j++) { t_j = y.charAt(j - 1); d[0] = j; for (i = 1; i <= n; i++) { cost = x.charAt(i - 1) == t_j ? 0 : 1; // minimum of cell to the left+1, to the top+1, diagonally left and up +cost d[i] = Math.min(Math.min(d[i - 1] + 1, p[i] + 1), p[i - 1] + cost); } // copy current distance counts to 'previous row' distance counts _d = p; p = d; d = _d; } // our last action in the above loop was to switch d and p, so p now // actually has the most recent cost counts return p[n]; } }