Skip to content

Commit 5cb74bd

Browse files
Fix consumed character tracking in Jaro-Winkler matching
1 parent 84b73d0 commit 5cb74bd

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

‎strings/jaro_winkler.py‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,16 @@ def jaro_winkler(str1: str, str2: str) -> float:
2727

2828
def get_matched_characters(_str1: str, _str2: str) -> str:
2929
matched = []
30+
matched_indices: set[int] = set()
3031
limit = min(len(_str1), len(_str2)) // 2
3132
for i, char in enumerate(_str1):
3233
left = int(max(0, i - limit))
3334
right = int(min(i + limit + 1, len(_str2)))
34-
if char in _str2[left:right]:
35-
matched.append(char)
36-
_str2 = (
37-
f"{_str2[0 : _str2.index(char)]} {_str2[_str2.index(char) + 1 :]}"
38-
)
35+
for index in range(left, right):
36+
if index not in matched_indices and char == _str2[index]:
37+
matched.append(char)
38+
matched_indices.add(index)
39+
break
3940

4041
return "".join(matched)
4142

0 commit comments

Comments
 (0)