diff --git a/src/Fastenshtein/Levenshtein.cs b/src/Fastenshtein/Levenshtein.cs index 029c02d..4446b49 100644 --- a/src/Fastenshtein/Levenshtein.cs +++ b/src/Fastenshtein/Levenshtein.cs @@ -246,7 +246,7 @@ public int DistanceFrom5(string value) return value.Length; } - int previousCost = 1; + int previousCost = 0; // Add indexing for insertion to first row for (; previousCost < costs.Length;) @@ -307,24 +307,21 @@ public int DistanceFrom(string value) var costs = this.costs; var storedValue = this.storedValue; ref var storedValueRef = ref MemoryMarshal.GetReference(storedValue.AsSpan()); - + if (costs.Length == 0) { return value.Length; } - int previousCost = 1; - - // Add indexing for insertion to first row + int previousCost = 0; ref var refCosts = ref MemoryMarshal.GetArrayDataReference(costs); - for (; previousCost <= costs.Length; previousCost++) + for (; previousCost < costs.Length;) { - refCosts = previousCost; + refCosts = ++previousCost; refCosts = ref Unsafe.Add(ref refCosts, 1); } refCosts = ref MemoryMarshal.GetArrayDataReference(costs); - for (int i = 0; i < value.Length; i++) { // cost of the first index