# -*- coding: cp936 -*-
def edit(str1, str2):
matrix = [[i+j for j in range(len(str2) + 1)] for i in range(len(str1) + 1)]
for i in xrange(1,len(str1)+1):
for j in xrange(1,len(str2)+1):
if str1[i-1] == str2[j-1]:
d = 0
else:
d = 1
matrix[i][j] = min(matrix[i-1][j]+1,matrix[i][j-1]+1,matrix[i-1][j-1]+d)
return matrix[len(str1)][len(str2)]
print edit('ofailing','osailn')
"""
test data:
>>> edit('abc','cba')
2
>>> edit("string","story")
4
>>> edit("book","block")
2
"""
最小编辑距离python实现
最新推荐文章于 2024-04-26 23:15:16 发布