两个字符串之间的最小距离

Minium distance between two strings

给定 2 个字符串 A,B。我们可以在其中插入一些字符'-'。

示例:X="abedf",我们可以插入 -> "a-b--edf-" 或 "ab-e-df" ...

我们称A和B的距离为abs(ASCII(A[i]-ASCII(B[i]))。但是如果A[i]或B[ i] 为 '-',则值为 K。 我们必须找到它们的最小距离。

示例:

A="cmc"

B="scmn"

K=2

我们可以插入到

A:“-c-m-c

B:“s-nmn-

所以距离是10.

设A,B为给定的字符串。

请注意,我们最多会插入'-'以使两个字符串不相互接触:

 d("cmc","scmn")<= d("cmc----","---scmn") =7*2=14

另请注意,插入 "-" over "-"(第一个在 A 中,第二个在 B 中)是无用的,因为它只会增加距离 2

此外,如果这些操作合法,让d(i,j)成为ABS(ASCI(A[i]-B[j])),并且o.w d(i,j) = 2(因为i>len(A) or j>len(B)

现在,让c(i,k)成为A[:i]和B[:j]的最小距离

我们会照顾c(2\*max(len(A),len(B)),2*max(len(A),len(B)))

注意 c(0,0)=0.

一般情况是:

c(i,k) =min of these cases:

 - d(i,k) + c(i+1,k+1)
 - 2 + c(i+1,k)
 - 2 + c(i,k+1)