编辑距离及问题延伸

编辑距离及问题延伸

由于最近在leetcode上刷题,这一阵又focus在了dynamic programming上面,动态规划一向就是面试的重点,而且题目难度普遍较大,难点并不在于像字符串数组中索引位置控制那种令人纠结的问题,更多是在思维上的深度,如果能够对问题进行很好的建模,代码通常会很简单,所以个人认为这类题目需要经常动笔写一写,从一些小例子出发寻求规律。

之前在上算法课的时候学习过动态规划的思想,而其中的编辑距离问题又是重中之重。恰好今天刷题的时候遇到了这类问题,所以动动笔,来总结一下。这是我的第一篇博客,希望能够开个好头。


编辑距离

又称Levenshtein距离(莱文斯坦距离也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。这三个操作的代价被认为是相同的,记为1。

这个距离通常被用来度量两个字符序列的相似程度,在长度一定的情况下,修改最小次数越多,两个序列的相似程度越小。举个简单的例子:两个字符串,str1="beast",str2="seat"。如果统计这个修改次数,我们可以删除str1的'b' 和 's',删除str2的's',共三次操作,虽然我们也可以删除"bea"和"ea",保留"st",但是这样的操作就需要5次,并不是最经济的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值