/LevenshteinDistance

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Levenshtein Distance

Levenshtein distance between two words is the minimum number of single-character edits (insertions, deletions or substitutions) required to change one word into the other. Also you can calculate "difference" between words as Levenshtein distance divided by length of longer word.

Few examples:

word1 word2 Levenshtein distance
(Case sensitive)
Levenshtein distance
(Case insensitive)
difference
(Case sensitive)
difference
(Case insensitive)
Hi HI 1 0 1/2 0.0
gitHub GitLab 3 2 1/2 1/3
word WORLD 5 1 1.0 1/5

Usage examples:

import com.github.wslf.levenshteindistance;

...
    
LevenshteinCalculator calculator = new LevenshteinCalculator();

String word1 = "gitHub";
StringBuilder word2 = new StringBuilder("GitLab");

System.out.println("LevDist CaseSens: " + calculator.getLevenshteinDistance(word1, word2));
System.out.println("LevDist CaseIns: " + calculator.getLevenshteinDistanceIgnoreCase(word1, word2));
System.out.println("Diff CaseSens: " + calculator.getDifference(word1, word2));
System.out.println("Diff CaseIns: " + calculator.getDifferenceIgnoreCase(word1, word2));

String word3 = "GitHub";

System.out.println("LevDist CaseSens: " + calculator.getLevenshteinDistance(word1, word3, true));
System.out.println("LevDist CaseIns: " + calculator.getLevenshteinDistance(word1, word3, false));
System.out.println("Diff CaseSens: " + calculator.getDifference(word1, word3, true));
System.out.println("Diff CaseIns: " + calculator.getDifference(word1, word3, false));