Java String Levenshtein Distance levenshteinDistance(String x, String y)

Here you can find the source of levenshteinDistance(String x, String y)

Description

levenshtein Distance

License

Open Source License

Declaration

static int levenshteinDistance(String x, String y) 

Method Source Code

//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];
    }
}

Related

  1. levenshteinDistance(String s1, String s2)
  2. levenshteinDistance(String s1, String s2)
  3. levenshteinDistance(String st1, String st2)
  4. levenshteinDistance(String string1, String string2)
  5. levenshteinDistance(String wordForm, String lemma)
  6. levenshteinDistance(String[] a, String[] b)
  7. levenshteinDistanceRatio(CharSequence lhs, CharSequence rhs)
  8. levenshteinEquals(double threshold, String dom1, String dom2)
  9. levenshteinSimilarity(String string1, String string2)