summaryrefslogtreecommitdiffstats
path: root/labb2/lib.py
blob: d48096f5313c4513b93b7112f26b019e402b3bfb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def minimum_edit_distance(s1, s2):
    """Returnera minimum edit distance för strängarna s1 och s2."""
    # byt värde på s1 och s2 om s1 är den längre strängen
    if len(s1) > len(s2):
        s1, s2 = s2, s1
    distances = range(len(s1) + 1)
    for index2, char2 in enumerate(s2):
        new_distances = [index2+1]
        for index1, char1 in enumerate(s1):
            if char1 == char2:
                new_distances.append(distances[index1])
            else:
                new_distances.append(1 + min((distances[index1],
                                              distances[index1+1],
                                              new_distances[-1])))
        distances = new_distances
    return distances[-1]