本题为LeetCode题库中第72题编辑距离,难度困难,题目请参考这里。这道题应该是字符串处理,自然语言算法工程师必做一道题目,很久都没想到解决思路突然有了灵感。

标准的DP题目,这道题的难点还是在于如何去定义状态转移方程,前面分享的那道地下城游戏也是难在定义状态转移方程,所以如何去定义才是最重要的!然后就是推导出如何变换。这种题很容易就想复杂了,而且情况一多根本就不知道怎么入手,这就陷入了僵局,如何跳出来?只能多刷题培养这种思维。
定义:
当字符串word1的长度为i,字符串word2的长度为j,dp[i][j]定义为将word1转为word2所使用的最少操作次数。
其实上面这个定义才是这道题最关键的部分,只要给出了定义,从定义出发来推导状态转移方程。其实做了那么多的动态规划题目,无非就是从dp[i-1][j],dp[i][j-1],dp[i-1][j-1]中找出和dp[i][j]的关系。下面我们来疏导这几个dp数组和dp[i][j]之间的关系,把关系理清楚了,状态转移方程自然也就出来了。
- 如果字符word
本文详细解析LeetCode第72题——编辑距离,重点在于理解动态规划的状态转移方程。通过定义dp[i][j]表示将word1转换为word2所需的最少操作次数,分析字符相同与不同情况,得出状态转移方程:dp[i][j] = min(dp[i-1][j-1], dp[i][j-1], dp[i-1][j]) + 1。并讨论了空字符串的特殊情况处理。动态规划是解决此类问题的关键。"
44066815,4945659,理解dump_stack:内核与用户态的栈回溯实现,"['内核开发', 'mips架构', '程序调试', '栈回溯', '内核符号表']
最低0.47元/天 解锁文章
447

被折叠的 条评论
为什么被折叠?



