![]() |
Prozentualer Unterschied zweier Strings ermitteln
Volker hat
![]() ![]()
Delphi-Quellcode:
function Levenshtein(const str1, str2: string): integer;
var delta: array of integer; len1, len2: integer; // length of str1, str2 idx1, idx2: integer; // index into str1, str2 clast, cnew: integer; // last/next cost begin len1 := Length(str1); len2 := Length(str2); if (len1 = 0) and (len2 = 0) then Result := 0 else if (len1 = 0) or (len2 = 0) then Result := 100 else begin SetLength(delta, len2 + 1); for idx2 := 0 to len2 do delta[idx2] := idx2; for idx1 := 1 to len1 do begin clast := delta[0]; delta[0] := idx1; for idx2 := 1 to len2 do begin cnew := clast + Ord(str1[idx1] <> str2[idx2]); if delta[idx2] + 1 < cnew then // <-- ist noch der alte! cnew := delta[idx2] + 1; if delta[idx2 - 1] + 1 < cnew then cnew := delta[idx2 - 1] + 1; clast := delta[idx2]; delta[idx2] := cnew; end; end; Result := delta[len2] * 100 div len2; (* Alternativ: if len2 > len1 then Result := delta[len2] * 100 div len2 else Result := delta[len2] * 100 div len1; *) end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz