我只需要递归地使用插入和删除操作,即可找到一个单词及其排序单词(例如apple和aelpp)之间的编辑距离。
我发现一些使用插入,删除和替换的资源,但是我不确定如何仅使用插入和删除。
这是我发现的代码:
def ld(s, t):
if not s: return len(t)
if not t: return len(s)
if s[0] == t[0]: return ld(s[1:], t[1:])
l1 = ld(s, t[1:])
l2 = ld(s[1:], t)
l3 = ld(s[1:], t[1:])
return 1 + min(l1, l2, l3)
仅查找插入和删除的数量需要进行哪些编辑?
答案 0 :(得分:1)
删除l3
,它像这样计算替换值
def ld2(s, t):
if not s: return len(t)
if not t: return len(s)
if s[0] == t[0]: return ld2(s[1:], t[1:])
l1 = ld2(s, t[1:])
l2 = ld2(s[1:], t)
return 1 + min(l1, l2)
您可以看到ld('apple', 'applx')
等于1,而具有相同参数的ld2
等于2。