动态规划经典教学题,上过《算导》的应该都会
Posted TechFlow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划经典教学题,上过《算导》的应该都会相关的知识,希望对你有一定的参考价值。
今天是LeetCode专题第41篇文章,我们一起来看一道经典的动态规划问题Edit Distance,编辑距离。
今天这道题我本来是想跳过的,因为它实在是太经典了,属于典型的老掉牙问题了。但是想了想,一方面因为之前立了flag要把所有Medium和Hard写一遍,另一方面也是为了照顾萌新,所以还是把这题放上来了。相信上过算法导论这门课的同学一定都见过它,如果你没有上过属于萌新,那也没有关系,学习起来也不会很费劲的。
编辑距离
编辑距离非常经典,它指的是我们要花费多少力气将一个字符串A变成字符串B。我们需要花费的力气越多,那么说明这两个字符串相差得越大,如果我们花费很少,说明两个字符串很接近。所以它可以用来作为衡量两个字符串相似程度的依据,今天这道题的题面就是要求两个字符串的编辑距离。
前面说了编辑距离就是我们将字符串A通过编辑变成字符串B花费的力气,但是力气是一个主观的概念,我们需要将它量化。量化的方式也很简单,我们规定删除一个字符、添加一个字符和修改一个字符的花费都是1。整体编辑距离就是所有编辑操作的花费之和。
比如我们把horse变成rose,显然只需要删除ho并且插入一个o即可,所以编辑距离是3。
我们来看一个题目中的样例:
Input: word1 = "intention", word2 = "execution"
Output: 5
Explanation:
intention -> inention (remove 't')
inention -> enention (replace 'i' with 'e')
enention -> exention (replace 'n' with 'x')
exention -> exection (replace 'n' with 'c')
exection -> execution (insert 'u')
以上是关于动态规划经典教学题,上过《算导》的应该都会的主要内容,如果未能解决你的问题,请参考以下文章