請考慮以下問題:設計一個算法,計算兩個字符串之間的編輯距離
兩個字符串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),那麼顯然你的算法會失敗。 –