编辑距离
def edit_distance(str1, str2):
len1 = len(str1)
len2 = len(str2)
matrix = [[i + j for j in range(len2 + 1)] for i in range(len1 + 1)]
for row in range(len1):
for col in range(len2):
comp = [matrix[row + 1][col] + 1, matrix[row][col + 1] + 1]
if str1[row] == str2[col]:
comp.append(matrix[row][col])
else:
comp.append(matrix[row][col] + 1)
if row > 0 and col > 0:
if str1[row] == str2[col - 1] and str1[row - 1] == str2[col]:
comp.append(matrix[row - 1][col - 1] + 1)
matrix[row + 1][col + 1] = min(comp)
return matrix[len1][len2]