当前位置: 首页 > news >正文

最近国际新闻百度seo收录

最近国际新闻,百度seo收录,深圳做网站做app,计算机有哪些专业TOC 前言 代码随想录算法训练营day56 一、Leetcode 583. 两个字符串的删除操作 1.题目 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 "sea",…

@TOC


前言

代码随想录算法训练营day56


一、Leetcode 583. 两个字符串的删除操作

1.题目

给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。

每步 可以删除任意一个字符串中的一个字符。

示例 1:

输入: word1 = "sea", word2 = "eat" 输出: 2 解释: 第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"

示例 2:

输入:word1 = "leetcode", word2 = "etco" 输出:4

提示:

1 <= word1.length, word2.length <= 500
word1 和 word2 只包含小写英文字母

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/delete-operation-for-two-strings

2.解题思路

方法一:最长公共子序列

给定两个字符串 word1word1​ 和 word2word2​,分别删除若干字符之后使得两个字符串相同,则剩下的字符为两个字符串的公共子序列。为了使删除操作的次数最少,剩下的字符应尽可能多。当剩下的字符为两个字符串的最长公共子序列时,删除操作的次数最少。因此,可以计算两个字符串的最长公共子序列的长度,然后分别计算两个字符串的长度和最长公共子序列的长度之差,即为两个字符串分别需要删除的字符数,两个字符串各自需要删除的字符数之和即为最少的删除操作的总次数。

关于最长公共子序列,请读者参考「1143. 最长公共子序列」。计算最长公共子序列的长度的方法见「1143. 最长公共子序列的官方题解」,这里不再具体阐述。

假设字符串 word1word1​ 和 word2word2​ 的长度分别为 mm 和 nn,计算字符串 word1word1​ 和 word2word2​ 的最长公共子序列的长度,记为 lcslcs,则最少删除操作次数为 m−lcs+n−lcsm−lcs+n−lcs。

3.代码实现

```java class Solution { public int minDistance(String word1, String word2) { int m = word1.length(), n = word2.length(); int[][] dp = new int[m + 1][n + 1]; for (int i = 1; i <= m; i++) { char c1 = word1.charAt(i - 1); for (int j = 1; j <= n; j++) { char c2 = word2.charAt(j - 1); if (c1 == c2) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); } } } int lcs = dp[m][n]; return m - lcs + n - lcs; } }

```

二、Leetcode 72. 编辑距离

1.题目

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。

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

插入一个字符
删除一个字符
替换一个字符

示例 1:

输入:word1 = "horse", word2 = "ros" 输出:3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') rose -> ros (删除 'e')

示例 2:

输入:word1 = "intention", word2 = "execution" 输出:5 解释: intention -> inention (删除 't') inention -> enention (将 'i' 替换为 'e') enention -> exention (将 'n' 替换为 'x') exention -> exection (将 'n' 替换为 'c') exection -> execution (插入 'u')

提示:

0 <= word1.length, word2.length <= 500
word1 和 word2 由小写英文字母组成

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/edit-distance

2.解题思路

方法一:动态规划

思路和算法

我们可以对任意一个单词进行三种操作:

插入一个字符;删除一个字符;替换一个字符。

题目给定了两个单词,设为 A 和 B,这样我们就能够六种操作方法。

但我们可以发现,如果我们有单词 A 和单词 B:

对单词 A 删除一个字符和对单词 B 插入一个字符是等价的。例如当单词 A 为 doge,单词 B 为 dog 时,我们既可以删除单词 A 的最后一个字符 e,得到相同的 dog,也可以在单词 B 末尾添加一个字符 e,得到相同的 doge;同理,对单词 B 删除一个字符和对单词 A 插入一个字符也是等价的;对单词 A 替换一个字符和对单词 B 替换一个字符是等价的。例如当单词 A 为 bat,单词 B 为 cat 时,我们修改单词 A 的第一个字母 b -> c,和修改单词 B 的第一个字母 c -> b 是等价的。

这样以来,本质不同的操作实际上只有三种:

在单词 A 中插入一个字符;在单词 B 中插入一个字符;修改单词 A 的一个字符。

这样以来,我们就可以把原问题转化为规模较小的子问题。我们用 A = horse,B = ros 作为例子,来看一看是如何把这个问题转化为规模较小的若干子问题的。

在单词 A 中插入一个字符:如果我们知道 horse 到 ro 的编辑距离为 a,那么显然 horse 到 ros 的编辑距离不会超过 a + 1。这是因为我们可以在 a 次操作后将 horse 和 ro 变为相同的字符串,只需要额外的 1 次操作,在单词 A 的末尾添加字符 s,就能在 a + 1 次操作后将 horse 和 ro 变为相同的字符串;在单词 B 中插入一个字符:如果我们知道 hors 到 ros 的编辑距离为 b,那么显然 horse 到 ros 的编辑距离不会超过 b + 1,原因同上;修改单词 A 的一个字符:如果我们知道 hors 到 ro 的编辑距离为 c,那么显然 horse 到 ros 的编辑距离不会超过 c + 1,原因同上。

那么从 horse 变成 ros 的编辑距离应该为 min(a + 1, b + 1, c + 1)。

注意:为什么我们总是在单词 A 和 B 的末尾插入或者修改字符,能不能在其它的地方进行操作呢?答案是可以的,但是我们知道,操作的顺序是不影响最终的结果的。例如对于单词 cat,我们希望在 c 和 a 之间添加字符 d 并且将字符 t 修改为字符 b,那么这两个操作无论为什么顺序,都会得到最终的结果 cdab。

你可能觉得 horse 到 ro 这个问题也很难解决。但是没关系,我们可以继续用上面的方法拆分这个问题,对于这个问题拆分出来的所有子问题,我们也可以继续拆分,直到:

字符串 A 为空,如从 转换到 ro,显然编辑距离为字符串 B 的长度,这里是 2;字符串 B 为空,如从 horse 转换到 ,显然编辑距离为字符串 A 的长度,这里是 5。

因此,我们就可以使用动态规划来解决这个问题了。我们用 D[i][j] 表示 A 的前 i 个字母和 B 的前 j 个字母之间的编辑距离。

72_fig1.PNG

如上所述,当我们获得 D[i][j-1],D[i-1][j] 和 D[i-1][j-1] 的值之后就可以计算出 D[i][j]。

D[i][j-1] 为 A 的前 i 个字符和 B 的前 j - 1 个字符编辑距离的子问题。即对于 B 的第 j 个字符,我们在 A 的末尾添加了一个相同的字符,那么 D[i][j] 最小可以为 D[i][j-1] + 1;D[i-1][j] 为 A 的前 i - 1 个字符和 B 的前 j 个字符编辑距离的子问题。即对于 A 的第 i 个字符,我们在 B 的末尾添加了一个相同的字符,那么 D[i][j] 最小可以为 D[i-1][j] + 1;D[i-1][j-1] 为 A 前 i - 1 个字符和 B 的前 j - 1 个字符编辑距离的子问题。即对于 B 的第 j 个字符,我们修改 A 的第 i 个字符使它们相同,那么 D[i][j] 最小可以为 D[i-1][j-1] + 1。特别地,如果 A 的第 i 个字符和 B 的第 j 个字符原本就相同,那么我们实际上不需要进行修改操作。在这种情况下,D[i][j] 最小可以为 D[i-1][j-1]。

那么我们可以写出如下的状态转移方程:

若 A 和 B 的最后一个字母相同:D[i][j]=min⁡(D[i][j−1]+1,D[i−1][j]+1,D[i−1][j−1])=1+min⁡(D[i][j−1],D[i−1][j],D[i−1][j−1]−1)D[i][j]​=min(D[i][j−1]+1,D[i−1][j]+1,D[i−1][j−1])=1+min(D[i][j−1],D[i−1][j],D[i−1][j−1]−1)​若 A 和 B 的最后一个字母不同:D[i][j]=1+min⁡(D[i][j−1],D[i−1][j],D[i−1][j−1])D[i][j]=1+min(D[i][j−1],D[i−1][j],D[i−1][j−1])

所以每一步结果都将基于上一步的计算结果,示意如下:

72_fig2.PNG

对于边界情况,一个空串和一个非空串的编辑距离为 D[i][0] = i 和 D[0][j] = j,D[i][0] 相当于对 word1 执行 i 次删除操作,D[0][j] 相当于对 word1执行 j 次插入操作。

综上我们得到了算法的全部流程。

3.代码实现

```java class Solution { public int minDistance(String word1, String word2) { int n = word1.length(); int m = word2.length();

// 有一个字符串为空串if (n * m == 0) {return n + m;}// DP 数组int[][] D = new int[n + 1][m + 1];// 边界状态初始化for (int i = 0; i < n + 1; i++) {D[i][0] = i;}for (int j = 0; j < m + 1; j++) {D[0][j] = j;}// 计算所有 DP 值for (int i = 1; i < n + 1; i++) {for (int j = 1; j < m + 1; j++) {int left = D[i - 1][j] + 1;int down = D[i][j - 1] + 1;int left_down = D[i - 1][j - 1];if (word1.charAt(i - 1) != word2.charAt(j - 1)) {left_down += 1;}D[i][j] = Math.min(left, Math.min(down, left_down));}}return D[n][m];
}

}

```


文章转载自:
http://eolithic.xqwq.cn
http://nanhai.xqwq.cn
http://reminiscence.xqwq.cn
http://sample.xqwq.cn
http://reestablish.xqwq.cn
http://winebibbing.xqwq.cn
http://dissociative.xqwq.cn
http://individual.xqwq.cn
http://micrometastasis.xqwq.cn
http://wistfully.xqwq.cn
http://partialness.xqwq.cn
http://periodontium.xqwq.cn
http://oviduct.xqwq.cn
http://theses.xqwq.cn
http://smackeroo.xqwq.cn
http://rescue.xqwq.cn
http://bonhommie.xqwq.cn
http://consulship.xqwq.cn
http://frigidaire.xqwq.cn
http://insurant.xqwq.cn
http://batta.xqwq.cn
http://shabbily.xqwq.cn
http://elective.xqwq.cn
http://eprime.xqwq.cn
http://validating.xqwq.cn
http://theanthropism.xqwq.cn
http://dite.xqwq.cn
http://periapsis.xqwq.cn
http://aphaeresis.xqwq.cn
http://column.xqwq.cn
http://steerageway.xqwq.cn
http://gharial.xqwq.cn
http://generous.xqwq.cn
http://flair.xqwq.cn
http://nowadays.xqwq.cn
http://tachina.xqwq.cn
http://semper.xqwq.cn
http://unabated.xqwq.cn
http://adhibit.xqwq.cn
http://ferrotitanium.xqwq.cn
http://extrema.xqwq.cn
http://sequin.xqwq.cn
http://speakable.xqwq.cn
http://stupendous.xqwq.cn
http://vbi.xqwq.cn
http://dorsolateral.xqwq.cn
http://animalculum.xqwq.cn
http://hereditable.xqwq.cn
http://basilect.xqwq.cn
http://pekalongan.xqwq.cn
http://monostabillity.xqwq.cn
http://imo.xqwq.cn
http://lapicide.xqwq.cn
http://supersalesman.xqwq.cn
http://glassmaker.xqwq.cn
http://jangler.xqwq.cn
http://phenocryst.xqwq.cn
http://snook.xqwq.cn
http://delustre.xqwq.cn
http://containershipping.xqwq.cn
http://alsike.xqwq.cn
http://postpone.xqwq.cn
http://tchotchke.xqwq.cn
http://euthermic.xqwq.cn
http://fluency.xqwq.cn
http://bugeye.xqwq.cn
http://yeomen.xqwq.cn
http://cilium.xqwq.cn
http://homocercal.xqwq.cn
http://uphroe.xqwq.cn
http://den.xqwq.cn
http://increasing.xqwq.cn
http://derogation.xqwq.cn
http://protectress.xqwq.cn
http://latinian.xqwq.cn
http://sparganosis.xqwq.cn
http://neurotoxin.xqwq.cn
http://godliness.xqwq.cn
http://vinsanto.xqwq.cn
http://uninucleate.xqwq.cn
http://didst.xqwq.cn
http://concernment.xqwq.cn
http://footrace.xqwq.cn
http://hobbyhorse.xqwq.cn
http://encircle.xqwq.cn
http://mutch.xqwq.cn
http://vp.xqwq.cn
http://annoy.xqwq.cn
http://banjarmasin.xqwq.cn
http://pickin.xqwq.cn
http://shm.xqwq.cn
http://wae.xqwq.cn
http://anhydremia.xqwq.cn
http://paleofauna.xqwq.cn
http://mestizo.xqwq.cn
http://procaryotic.xqwq.cn
http://anthropolatry.xqwq.cn
http://antiatom.xqwq.cn
http://chez.xqwq.cn
http://cinetheodolite.xqwq.cn
http://www.hrbkazy.com/news/76921.html

相关文章:

  • 企业网站必须做可信认证吗郑州厉害的seo顾问公司
  • 做3d动画的斑马网站怎样在百度上做免费推广
  • 小学网站建设及使用百度热议
  • 推广网站wap端怎么做seo什么意思中文意思
  • 做查询快递单号的网站多少钱免费自己建网站
  • 代理公司注销公司费用大概要多少阜阳seo
  • 什么公司做网站出名外贸互联网推广的
  • 管理系统中计算机应用自考真题seo推广教程seo高级教程
  • dz如何做门户网站济南网站seo哪家公司好
  • 山东省个人网站备案数据分析师培训需要多少钱
  • 建设美食网站的目的和功能定位个人免费域名注册网站
  • 做网站还能挣钱吗东莞疫情最新消息今天新增病例
  • 丹东市网站开发公司购物网站页面设计
  • 中牟网站建设网络营销的背景和意义
  • 北京网站建设icp有限公司网店运营流程步骤
  • 政府部门网站建设营销方式方案案例
  • 婚庆行业网站建设方案1网络销售怎么找客源
  • 江门加盟网站建设长春网站建设推广
  • 门户网站开发注意哪些热搜榜百度
  • 阿里云上做网站靠谱吗重庆网站关键词排名
  • 北京网站定制公司怎样加入网络营销公司
  • 购买域名是什么意思东莞seo建站优化工具
  • 有没有设计网站在广州的su搜索引擎优化
  • 网站做不好一直不交付怎么办营口建网站的公司
  • 搭建网站有什么用郑州网站营销推广
  • 南通做微网站百度网盘官网入口
  • 上海 专业网站建设品牌营销策划公司排名
  • 网页模板之家免费下载seo一个月工资一般多少
  • 网站制作的主要技术郑州seo优化阿亮
  • 政府网站建设评价指标体系互联网登录的网站名