首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Leetcode】72.编辑距离

题目

给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。

你可以对一个单词进行如下三种操作:

示例 1:

示例 2:

题解

这个题目拿到题目基本就能想到DP,因为感觉和我们之前的爬楼梯啥的比较相似。这个题目比较为hard主要是,状态转换比较复杂。

定义: dp[i][j] , word1这个字符串的前i个 -> word1这个字符串的前j 个字符,所需要的最小的步数

那么有以下几种情况

word1[i] == word2[j]

不需要做变化,那么 dp[i][j] = dp[i-1,j-1]

word1[i] != word2[j]

我们就需要动用上面那三种操作了:

add = dp[i, j-1], 代表插入一个字符

delete = dp[i-1, j],代表删除一个字符

replace = dp[i-1, j-1],代表替换一个字符

dp[i][j] = 1 + min(add, delete, replace)

时间复杂度 o(m * n)

java

python

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180920A0C54E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券