levenshteinDistance function
Compute the Levenshtein edit distance between a and b.
Implementation
int levenshteinDistance(String a, String b) {
if (a == b) return 0;
if (a.isEmpty) return b.length;
if (b.isEmpty) return a.length;
// Use two-row optimization
var prev = List.generate(b.length + 1, (i) => i);
var curr = List.filled(b.length + 1, 0);
for (var i = 1; i <= a.length; i++) {
curr[0] = i;
for (var j = 1; j <= b.length; j++) {
final cost = a[i - 1] == b[j - 1] ? 0 : 1;
curr[j] = [
prev[j] + 1, // deletion
curr[j - 1] + 1, // insertion
prev[j - 1] + cost, // substitution
].reduce(math.min);
}
final tmp = prev;
prev = curr;
curr = tmp;
}
return prev[b.length];
}