def levenshtein_distance()

in src/Backend/src/api/routers/processor/endpoints.py [0:0]


def levenshtein_distance(string_one: str, string_two: str) -> int:
    """
    Checks the levenshtein distance between two strings
    For every insertion, deletion or substitution it adds 1 point
    0 points means string_one and string_two are the same string
    """
    if len(string_one) < len(string_two):
        return levenshtein_distance(string_two, string_one)

    if len(string_two) == 0:
        return len(string_one)

    previous_row = list(range(len(string_two) + 1))
    for i, char_one in enumerate(string_one):
        current_row = [i + 1]
        for j, char_two in enumerate(string_two):
            insertions = previous_row[j + 1] + 1
            deletions = current_row[j] + 1
            substitutions = previous_row[j] + (char_one != char_two)
            current_row.append(min(insertions, deletions, substitutions))
        previous_row = current_row

    return previous_row[-1]