Guest User

Untitled

a guest
Nov 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. DEF MAX_STR = 2096
  2.  
  3.  
  4. def levenshtein(char* s1, char* s2, int bail_at=5):
  5. cdef int len_s1 = len(s1)
  6. cdef int len_s2 = len(s2)
  7.  
  8. cdef int v0[MAX_STR]
  9. cdef int v1[MAX_STR]
  10.  
  11. cdef char c1, c2
  12.  
  13. cdef int x
  14. cdef int i
  15. cdef int j
  16.  
  17. cdef int smallest
  18.  
  19. for x in range(MAX_STR):
  20. v1[x] = v0[x] = 0
  21.  
  22. for x in range(len_s2 + 1):
  23. v1[x] = x
  24.  
  25. for i in range(len_s1):
  26. c1 = s1[i]
  27.  
  28. for x in range(len_s2 + 1):
  29. v0[x] = v1[x]
  30.  
  31. v1[0] += 1
  32.  
  33. for j in range(1, len_s2 + 1):
  34. c2 = s2[j - 1]
  35. if c1 == c2:
  36. v1[j] = v0[j - 1]
  37. else:
  38. v1[j] = 1 + min(v0[j - 1], v0[j], v1[j - 1])
  39.  
  40. smallest = 1000
  41. for j in range(len_s2 + 1):
  42. if v1[j] < smallest:
  43. smallest = v1[j]
  44.  
  45. if smallest >= bail_at:
  46. return bail_at + 1
  47.  
  48. return v1[len_s2]
Add Comment
Please, Sign In to add comment