Delegate ФейкПрофил, и аз мисля, че му е бавен Левенщ*ейнът*. Тоя C# вариант, при мен е по-бърз от неговия.
public static int LevenshteinDistance(string value1, string value2) { if (value1.Length == 0) { return 0; } int[] costs = new int[value1.Length]; // Add indexing for insertion to first row for (int i = 0; i < costs.Length; ) { costs[i] = ++i; } int minSize = value1.Length < value2.Length ? value1.Length : value2.Length; for (int i = 0; i < minSize; i++) { // cost of the first index int cost = i; int addationCost = i; // cache value for inner loop to avoid index lookup and bonds checking, profiled this is quicker char value2Char = value2[i]; for (int j = 0; j < value1.Length; j++) { int insertionCost = cost; cost = addationCost; // assigning this here reduces the array reads we do, improvment of the old version addationCost = costs[j]; if (value2Char != value1[j]) { if (insertionCost < cost) { cost = insertionCost; } if (addationCost < cost) { cost = addationCost; } ++cost; } costs[j] = cost; } } return costs[costs.Length - 1]; }
Тоя откъде го взе, понеже и ползвах за моя пример C# вариант, да не се окаже че съм много назад заради кьопав ЛевенЩЕЙН