Spaces:
Runtime error
Runtime error
def levenshtein_distance(s1, s2):
#9
by
liyongsea
- opened
Question:
def levenshtein_distance(s1, s2):
Answer:
def levenshtein_distance(s1, s2):
"""Calculates the Levenshtein distance between two strings.
The Levenshtein distance is defined as the number of additions, deletions or substitutions required to transform one string into another. This can be thought of as a measure of similarity between two sequences. It differs from the standard edit distance in that it allows for transpositions and replaces all insertions with deletions.
Args:
s1 (str): first string
s2 (str): second string
Returns:
int: Levenshtein distance between `s1` and `s2`. If both are equal then 0 is returned.
"""
if len(s1) < len(s2):
return levenshtein_distance(s2, s1)
# len(s1) >= len(s2)
if len(s2) == 0:
return len(s1)
previous_row = xrange(len(s2)+1)
for i, c1 in enumerate(s1):
current_row = [i+1]
for j, c2 in enumerate(s2):
insertions = previous_row[j + 1] + 1 # j+1 instead of j since previous_row and current_row are one character longer
deletions = current_row[j] + 1 # than s2
substitutions = previous_row[j] + (c1!= c2)
current_row.append(min(insertions, deletions, substitutions))
previous_row = current_row
return previous_row[-1]
<|endoftext|>