-
Notifications
You must be signed in to change notification settings - Fork 0
/
lev.py
33 lines (26 loc) · 884 Bytes
/
lev.py
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
# -*- coding: utf-8 -*-
import sys
def levenshtein(a, b):
""" Calculates the Levenshtein distance between a and b.
from http://hetland.org/coding/python/levenshtein.py
For other implementations, see
http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance
"""
n, m = len(a), len(b)
if n > m:
a, b = b, a
n, m = m, n
current = range(n + 1)
for i in range(1, m + 1):
previous, current = current, [i] + [0] * n
for j in range(1, n + 1):
add, delete = previous[j] + 1, current[j - 1] + 1
change = previous[j - 1]
if a[j - 1] != b[i - 1]:
change = change + 1
current[j] = min(add, delete, change)
return current[n]
if len(sys.argv) < 3:
print "dos argumentos"
exit(1)
print levenshtein(sys.argv[1], sys.argv[2])