The Levenshtein distance is a string metric for measuring the difference
// The Levenshtein distance is a string metric for measuring the difference
// between two sequences.
function LevenshteinDistance(s, t : String) : Integer;
var i, j : Integer;
begin
var slen := Length(s);
var tlen := Length(t);
var d := new Integer[slen + 1, tlen + 1];
for i := 0 to slen do d[i, 0] := i;
for j := 0 to tlen do d[0, j] := j;
for j := 1 to tlen do
for i := 1 to slen do
if s[i] = t[j] then d[i, j] := d[i-1, j-1]
else d[i, j] := MinInt(MinInt(d[i-1, j] + 1, d[i, j-1] + 1), d[i-1, j-1] + 1);
Result := d[slen, tlen];
end;
PrintLn('Distance between "kitten" and "sitting": ' + IntToStr(LevenshteinDistance('kitten', 'sitting')));
Distance between "kitten" and "sitting": 3