编辑距离DP算法

偶然看到这道经典题,顺便复习下DP, 


由于懒得做图,所以,需要图片或者其他讲法,请参考这篇https://blog.youkuaiyun.com/chichoxian/article/details/53944188。 可能你需要配合这位作者的图片才能更好理解


有两个字符串str1跟str2, 设他们的最短距离为str1变为str2的操作最小次数,有以下三种操作

1. 插入字符,如abc  -> abcd

2. 删除字符 ,如abc -> ac

3. 替换字符,   如abc -> adc

输入两个字符串,请计算两个字符串的最短距离


由于我们发现,一个字符串中,所有子字符串(或者说字符)都可能有以上操作,所有此问题具有重复子问题。

这是一道经典的dp算法, 设i为str1[:i], str2[:j](python表达方法,str[:i]意味着str[0]到str[i], 读者注意str[i]是一个字符,str[:i]是一个子字符串)

 状态

    dp[i][j]定义为str1[:i]到str2[:j]的最短距离

    思路是这样的,先考虑最后一步,此时i是str1的最后一个字符,j是str2的最后一个字符, 那么有几种可能

1.  str1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值