Gerade aus einem alten (~5 Jahre alt) Script ausgegraben... vielleicht kann es hier ja noch wer gebrauchen.
AutoIt: Levenshtein-Distance
Func __Levenshtein($s, $t)
Local $m, $n, $iMaxM, $iMaxN
$n = StringLen($s)
$m = StringLen($t)
$ss = StringSplit($s, "")
$tt = StringSplit($t, "")
$iMaxN = $n + 1
$iMaxM = $m + 1
Dim $d[$iMaxN + 1][$iMaxM + 1]
$d[0][0] = 0
If $n = 0 Then
Return $m
ElseIf $m = 0 Then
Return $n
EndIf
For $i = 1 To $n
$d[$i][0] = $d[$i - 1][0] + 1
Next
For $j = 1 To $m
$d[0][$j] = $d[0][$j - 1] + 1
Next
For $i = 1 To $n
For $j = 1 To $m
$jj = $j - 1
$ii = $i - 1
Local $cost
If (StringMid($s, $i, 1) = StringMid($t, $j, 1)) Then
$cost = 0
Else
$cost = 1
EndIf
$d[$i][$j] = __Min(__Min($d[$ii][$j] + 1, $d[$i][$jj] + 1), $d[$ii][$jj] + $cost)
Next
Next
Return $d[$n][$m]
EndFunc
Func __Min($iNum1, $iNum2)
Return (Number($iNum1) > Number($iNum2)) ? Number($iNum2) : Number($iNum1)
EndFunc
Alles anzeigen
Hinweis: Nicht sicher, ob damals selbst geschrieben oder eine modifizierte Fassung eines anderen Nutzers. Lob sollte daher an den unbekannten Nutzer gehen.