LeetCode(72)Edit Distance

本文详细解析LeetCode中的72题——编辑距离,介绍了如何通过动态规划求解从word1转换到word2所需的最小步骤数,并提供了状态转移方程及代码实现。编辑距离问题涉及到插入、删除和替换三种操作。
摘要由CSDN通过智能技术生成

题目

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted on a word:
a) Insert a character
b) Delete a character
c) Replace a character

本题是典型的适合使用动态规划的题目。在斯坦福的公开课(中文英文)上,有对这个问题的详细说明,所以接下来就继续使用斯坦福公开课的例子了。

如果要计算单词"INTENTION"和单词"EXECUTION"之间的编辑距离,那么该怎么计算呢?

首先,把这个问题简单化。把上面两个单词简化为长度为1的两个单词I和E。

如果要“I”变化为"E",可以把"I"替换为"E"
如果要“I”变化为空串" ",可以把"I"删除,从而形成""
如果要空串“ ”变化为"E",可以把"E"插入,从而形成E

上面三种变化分别表示替换,删除,插入这三种基本操作。

接下来,定义一个表达式D(i,j)。它表示从第1个字单词的第0位至第i位形成的子串和第2个单词的第0位至第j位形成的子串的编辑距离。

显然,可以计算出动态规划的初始表达式,如下:

D(i,0) = i

D(0,j) = j

然后࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值