namespace NubLang; public static class Utils { public static int LevenshteinDistance(string a, string b) { if (a == b) return 0; if (a.Length == 0) return b.Length; if (b.Length == 0) return a.Length; var costs = new int[b.Length + 1]; for (int j = 0; j <= b.Length; j++) costs[j] = j; for (int i = 1; i <= a.Length; i++) { costs[0] = i; int prevCost = i - 1; for (int j = 1; j <= b.Length; j++) { int currentCost = costs[j]; costs[j] = Math.Min( Math.Min(costs[j - 1] + 1, costs[j] + 1), prevCost + (a[i - 1] == b[j - 1] ? 0 : 1) ); prevCost = currentCost; } } return costs[b.Length]; } }