1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Function Levenshtein(str1, str2)
Dim arrLev, intLen1, intLen2, i
Dim j, arrStr1, arrStr2, intMini
intLen1 = Len(str1)
ReDim arrStr1(intLen1 + 1)
intLen2 = Len(str2)
ReDim arrStr2(intLen2 + 1)
ReDim arrLev(intLen1 + 1, intLen2 + 1)
arrLev(0, 0) = 0
For i = 1 To intLen1
arrLev(i, 0) = i
arrStr1(i) = Mid(str1, i, 1)
Next
For j = 1 To intLen2
arrLev(0, j) = j
arrStr2(j) = Mid(str2, j, 1)
Next
For j = 1 To intLen2
For i = 1 To intLen1
If arrStr1(i) = arrStr2(j) Then
arrLev(i, j) = arrLev(i-1, j-1)
Else
intMini = arrLev(i-1, j) 'deletion
If intMini > arrLev(i, j-1) Then intMini = arrLev(i, j-1) 'insertion
If intMini > arrLev(i-1, j-1) Then intMini = arrLev(i-1, j-1) 'deletion
arrLev(i, j) = intMini + 1
End If
Next
Next
Levenshtein = arrLev(intLen1, intLen2)
End Function |
Partager