请考虑以下问题:设计一个算法,计算两个字符串之间的编辑距离
两个字符串s
和t
的编辑距离是单字符操作(插入,删除,替换)需要的最小数目将s
转换为t
。假设m
和n
是字符串s
和t
的长度。
设计一个O(nm)
时间和O(nm)
空间算法来计算s
和t
之间的编辑距离。
我的想法:
是不是很容易,只需比较两个字符串每次一个字符:
L = maximum(length(s), length(t))
for i in L:
if i > length(s):
distance += length(t) - i
break
if i > length(t):
distance += length(s) - i
break
if s[i] != t[i]:
distance += 1
如果我错了,那么我应该使用编辑距离算法表?是的,我该如何设计一个O(nm)
时间和O(nm)
空间算法?
[Levenshtein距离](https://en.wikipedia.org/wiki/Levenshtein_distance) – amit
另请参阅[本教程](http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Dynamic/Edit/)。 –
如果s ='ABCDEF'和t ='BCDEFG'(编辑距离= 2),那么显然你的算法会失败。 –