Skip to content

Commit 5b30676

Browse files
authored
Update damerau_levenshtein_distance.py
1 parent dd0cc28 commit 5b30676

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

strings/damerau_levenshtein_distance.py

+12-16
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,23 @@ def damerau_levenshtein_distance(first_string: str, second_string: str) -> int:
3030
2
3131
>>> damerau_levenshtein_distance("container", "containment")
3232
3
33+
>>> damerau_levenshtein_distance("container", "containment")
34+
3
3335
"""
34-
35-
length_of_first_string = len(first_string)
36-
length_of_second_string = len(second_string)
37-
3836
# Create a dynamic programming matrix to store the distances
39-
dp_matrix = [
40-
[0] * (length_of_second_string + 1) for _ in range(length_of_first_string + 1)
41-
]
37+
dp_matrix = [[0] * (len(second_string) + 1) for _ in range(len(first_string) + 1)]
4238

4339
# Initialize the matrix
44-
for i in range(length_of_first_string + 1):
40+
for i in range(len(first_string) + 1):
4541
dp_matrix[i][0] = i
46-
for j in range(length_of_second_string + 1):
42+
for j in range(len(second_string) + 1):
4743
dp_matrix[0][j] = j
4844

4945
# Fill the matrix
50-
for i in range(1, length_of_first_string + 1):
51-
for j in range(1, length_of_second_string + 1):
52-
cost = 0 if first_string[i - 1] == second_string[j - 1] else 1
46+
# for i in range(1, length_of_first_string + 1):
47+
for i, first_char in enumerate(first_string, start=1):
48+
for j, second_char in enumerate(second_string, start=1):
49+
cost = int(first_char != second_char)
5350

5451
dp_matrix[i][j] = min(
5552
dp_matrix[i - 1][j] + 1, # Deletion
@@ -63,11 +60,10 @@ def damerau_levenshtein_distance(first_string: str, second_string: str) -> int:
6360
and first_string[i - 1] == second_string[j - 2]
6461
and first_string[i - 2] == second_string[j - 1]
6562
):
66-
dp_matrix[i][j] = min(
67-
dp_matrix[i][j], dp_matrix[i - 2][j - 2] + cost
68-
) # Transposition
63+
# Transposition
64+
dp_matrix[i][j] = min(dp_matrix[i][j], dp_matrix[i - 2][j - 2] + cost)
6965

70-
return dp_matrix[length_of_first_string][length_of_second_string]
66+
return dp_matrix[-1][-1]
7167

7268

7369
if __name__ == "__main__":

0 commit comments

Comments
 (0)