编辑距离问题 解题分析

编辑距离问题:设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括(1)删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B)。

这一题很多人想到最长公共子串了,Good!但是做出来还要再多一点DP的感觉。

准备:a[0]~a[i-1]的子串记为ai,a[0]~a[i-2]的子串记为a(i-1),

            b[0]~b[j-1]的子串记为bj,b[0]~b[j-2]的子串记为b(j-1)

状态:c[i][j]记录ai与bj的最优编辑距离

结果:c[m][n],其中m、n分别是a、b的串长

初值:b串空,要删a串长个字符;a串空,要插b串长个字符

转移方程:当a[i-1]=b[j-1]时,c[i][j]=c[i-1][j-1],否则,

                    c[i][j]=min(c[i-1][j-1]+1,c[i][j-1]+1,c[i-1][j]+1)

说明:c[i-1][j-1]+1:改a[i-1]为b[j-1];

            c[i][j-1]+1:a[i-1]后插入b[j-1];

            c[i-1][j]+1:删a[i-1]。

学无止境!大家努力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值