字符串编辑距离算法(LevenshteinDistance)
理解:将字符串A编辑为字符串B所进行的最小操作数,操作包括插入、删除、修改。
举例1:“kitten"变为"sitting”
‘k’->‘s’
‘e’变为’i’
‘kitten’末尾还需加上’g’
故字符串编辑距离为3
举例2:“fish abc"变为"pushabdc”
‘f’ -> ‘p’
‘i’ -> ‘u’
’ '删除
‘abc’中’c’前增加’d’
故字符串编辑距离为4
python代码实现
参考C++代码修改
import numpy as np
def Edit_Distance(word_a,word_b):
len_a = len(word_a)
len_b = len(word_b)
dp = np.zeros(1010,dtype = int)
for j in range(1,len_b+1):
dp[j] = j
for i in range(1,len_a+1):
t1 = dp[0]
dp[0] = dp[0] + 1
for j in range(1,len_b+1):
t2 = dp[j]
if word_a[i-1] == word_b[j-1]:
dp[j] = t1
else:
dp[j] = min(t1, dp[j-1], dp[j]) + 1
t1 = t2
print(dp[len_b])
return dp[len_b]
测试
Edit_Distance('fish abc','pushabdc')
# 输出:
# 4