Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. def levenshtein(a, b, mem={}):
  2. """ calculates the Levenshtein distance between two strings, a and b.
  3.  
  4. PARAMETERS:
  5. a: str
  6. b: str
  7.  
  8. RETURNS:
  9. integer distance between two strings
  10.  
  11. EXAMPLE:
  12. > levenshtein('hello world', 'howdy world')
  13. 4
  14. """
  15. try:
  16. assert isinstance(a, str) and isinstance(b, str)
  17. except AssertionError as e:
  18. print(e)
  19. sys.exit(2)
  20.  
  21. ij = (len(a), len(b))
  22.  
  23. if min(ij) == 0:
  24. mem[ij] = max(ij)
  25. elif ij not in mem:
  26. cost = a[-1] != b[-1]
  27. mem[ij] = min(levenshtein(a[0:-1], b, mem) + 1,
  28. levenshtein(a, b[0:-1], mem) + 1,
  29. levenshtein(a[0:-1], b[0:-1], mem) + cost)
  30.  
  31. return mem[ij]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement