levenshteinDistanceTo method

int levenshteinDistanceTo(
  1. String? other
)

Implementation

int levenshteinDistanceTo(String? other) {
  var a = (this ?? "").toUpperCase();
  var b = (other ?? "").toUpperCase();
  int sa = a.length;
  int sb = b.length;
  int i, j, cost, min1, min2, min3;
  List<List<int>> d =
      List.generate(sa + 1, (int i) => List.generate(sb + 1, (_) => 0));
  if (a.length == 0) {
    return b.length;
  }
  if (b.length == 0) {
    return a.length;
  }
  for (i = 0; i <= sa; i++) d[i][0] = i;
  for (j = 0; j <= sb; j++) d[0][j] = j;
  for (i = 1; i <= a.length; i++)
    for (j = 1; j <= b.length; j++) {
      if (a[i - 1] == b[j - 1])
        cost = 0;
      else
        cost = 1;
      min1 = (d[i - 1][j] + 1);
      min2 = (d[i][j - 1] + 1);
      min3 = (d[i - 1][j - 1] + cost);
      d[i][j] = min(min1, min(min2, min3));
    }
  return d[a.length][b.length];
}