编辑距离
编辑距离又称Levenshtein距离,是指将一个字符串转为另一个字符串所需的字符编辑次数,包括以下三种操作:
- 插入 - 在任意位置插入一个字符
- 删除 - 将任意一个字符删除
- 替换 - 将任意一个字符替换为另一个字符
最小编辑距离是指将一个字符串转为另一个字符串所需的最少字符编辑次数。
思路
计算最小编辑距离需要用到动态规划。对于两个字符串 A A A和 B B B,设 f ( i , j ) f(i, j) f(i,j)表示将 A A A的前 i i i个字符构成的子串转为 B B B的前 j j j个字符构成的子串所需的最少次数,那么 f ( i , 0 ) = i f(i, 0) = i f(i,0)=i, f ( 0 , j ) = j f(0, j) = j f(0,j)=j,从 A A A到 B B B的最小编辑距离即 f ( m , n ) f(m, n) f(m,n), m m m和 n n n分别为 A A A和 B B B的长度。
由于 f ( i , 0 ) f(i, 0) f(i,0)和 f ( 0 , j ) f(0, j) f(0,j)已确