题目描述
Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。
Ex:
字符串A:abcdefg
字符串B: abcdef
通过增加或是删掉字符”g”的方式达到目的。这两种方案都需要一次操作。把这个操作所需要的次数定义为两个字符串的距离。
要求:
给定任意两个字符串,写出一个算法计算它们的编辑距离。
输入描述:
输入两个字符串
输出描述:
得到计算结果
输入:
abcdefg
abcdef
输出:
1
代码如下:
while True:
try:
def string_distance(a,b):
m=len(a)+1
n=len(b)+1
dp=[[0]*n for i in range(m)]
for i in range(m):
dp[i][0]=i
for j in range(n):
dp[0][j]=j
for i in range(1,m):
for j in range(1,n):
if a[i-1]==b[j-1]:
cost=0
else:
cost=1
oblique=dp[i-1][j-1]+cost
upper=dp[i-1][j]+1
left=dp[i][j-1]+1
dp[i][j]=min(oblique,upper,left)
return dp[m-1][n-1]
a=input()
b=input()
nn=string_distance(a,b)
print(nn)
except:
break