Java String Levenshtein Distance levenshteinDistance(String s1, String s2)

Here you can find the source of levenshteinDistance(String s1, String s2)

Description

I shamefully stole this from: http://rosettacode.org/wiki/Levenshtein_distance#Java --Gabor

License

Open Source License

Declaration

public static int levenshteinDistance(String s1, String s2) 

Method Source Code

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

Related

  1. levenshteinDistance(String s, String t)
  2. LevenshteinDistance(String s, String t)
  3. levenshteinDistance(String s, String t)
  4. levenshteinDistance(String s, String t)
  5. levenshteinDistance(String s, String t, int limit)
  6. levenshteinDistance(String s1, String s2)
  7. levenshteinDistance(String st1, String st2)
  8. levenshteinDistance(String string1, String string2)
  9. levenshteinDistance(String wordForm, String lemma)