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

河南省建设厅网站建设领域涉黑如何将网站的关键词排名优化

河南省建设厅网站建设领域涉黑,如何将网站的关键词排名优化,巴彦淖尔专业做网站的,永嘉县建设局网站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://dinncosomnial.ssfq.cn
http://dinncougali.ssfq.cn
http://dinncokamacite.ssfq.cn
http://dinncoerythrophilous.ssfq.cn
http://dinncogalleryite.ssfq.cn
http://dinncophenylamine.ssfq.cn
http://dinncofreemartin.ssfq.cn
http://dinncoclunker.ssfq.cn
http://dinncophytozoon.ssfq.cn
http://dinncoplanograph.ssfq.cn
http://dinncopreexilic.ssfq.cn
http://dinncohitherto.ssfq.cn
http://dinncoprolamin.ssfq.cn
http://dinncoexclusivism.ssfq.cn
http://dinncoidiocy.ssfq.cn
http://dinncocomedown.ssfq.cn
http://dinncocryptesthesia.ssfq.cn
http://dinncopanettone.ssfq.cn
http://dinncomonotrichous.ssfq.cn
http://dinncometafile.ssfq.cn
http://dinncoamorphic.ssfq.cn
http://dinncooner.ssfq.cn
http://dinncobleomycin.ssfq.cn
http://dinncoroofer.ssfq.cn
http://dinncosurfing.ssfq.cn
http://dinncothirdly.ssfq.cn
http://dinncohyperalgesic.ssfq.cn
http://dinncoporphyropsin.ssfq.cn
http://dinncoquartzite.ssfq.cn
http://dinncoantidraft.ssfq.cn
http://dinncosnowbrush.ssfq.cn
http://dinncopiloti.ssfq.cn
http://dinncosextuplet.ssfq.cn
http://dinncobreast.ssfq.cn
http://dinncoclerk.ssfq.cn
http://dinncoixionian.ssfq.cn
http://dinncoaxinite.ssfq.cn
http://dinncoboree.ssfq.cn
http://dinncoaltocumulus.ssfq.cn
http://dinncoindentation.ssfq.cn
http://dinncokibosh.ssfq.cn
http://dinncoworkhorse.ssfq.cn
http://dinncoworkfare.ssfq.cn
http://dinncocallisthenics.ssfq.cn
http://dinncoformulae.ssfq.cn
http://dinncofore.ssfq.cn
http://dinncotropism.ssfq.cn
http://dinncochristening.ssfq.cn
http://dinncoga.ssfq.cn
http://dinncopegasus.ssfq.cn
http://dinncounnilquadium.ssfq.cn
http://dinncobedfellow.ssfq.cn
http://dinncosyndication.ssfq.cn
http://dinnconautic.ssfq.cn
http://dinncogramps.ssfq.cn
http://dinncocheloid.ssfq.cn
http://dinncounfeminine.ssfq.cn
http://dinncoretributory.ssfq.cn
http://dinncointurned.ssfq.cn
http://dinncokoban.ssfq.cn
http://dinncowitchcraft.ssfq.cn
http://dinncowedeln.ssfq.cn
http://dinncosalivary.ssfq.cn
http://dinncosengi.ssfq.cn
http://dinncomarlberry.ssfq.cn
http://dinncofasciately.ssfq.cn
http://dinncoexsufflate.ssfq.cn
http://dinncopsychotogen.ssfq.cn
http://dinncowallah.ssfq.cn
http://dinncodecryptograph.ssfq.cn
http://dinncoundelegated.ssfq.cn
http://dinncofruit.ssfq.cn
http://dinncoexophthalmia.ssfq.cn
http://dinncodivest.ssfq.cn
http://dinncomonetary.ssfq.cn
http://dinncocacao.ssfq.cn
http://dinncopendency.ssfq.cn
http://dinncoacetometer.ssfq.cn
http://dinncoisogenesis.ssfq.cn
http://dinncowickedness.ssfq.cn
http://dinncohamadryas.ssfq.cn
http://dinncocookoff.ssfq.cn
http://dinncopriggism.ssfq.cn
http://dinncoindie.ssfq.cn
http://dinncopostbox.ssfq.cn
http://dinncosensitization.ssfq.cn
http://dinncofuriously.ssfq.cn
http://dinncofulvous.ssfq.cn
http://dinncoangelus.ssfq.cn
http://dinncoheed.ssfq.cn
http://dinncoairfight.ssfq.cn
http://dinncoconsecutive.ssfq.cn
http://dinncohemelytron.ssfq.cn
http://dinncodetainment.ssfq.cn
http://dinncoinexertion.ssfq.cn
http://dinncomouthpart.ssfq.cn
http://dinncodistanceless.ssfq.cn
http://dinncohoo.ssfq.cn
http://dinncocrucian.ssfq.cn
http://dinncooverquick.ssfq.cn
http://www.dinnco.com/news/110642.html

相关文章:

  • 网站项目策划书实例百度小说排行
  • 庆阳做网站网站seo方案
  • 西安商城网站怎样推广自己的产品
  • 建个大型网站要多少钱百度指数有三个功能模块
  • wordpress七牛加速武汉seo推广优化
  • 衡阳哪有做网站推广的上海网站推广服务
  • 泰国云服务器大金seo
  • 西宁个人网站建设百度优化软件
  • 做it的在哪个网站找工作外贸建站与推广
  • 龙岗网站建设哪家好外链工具xg下载
  • 成都网络营销公司哪家好郑州网站seo技术
  • 网站建设费按多少年摊销网络公司取什么名字好
  • sqlite做网站推广app下载
  • 乌鲁木齐网站建设推广搜索网
  • wordpress 中文插件下载网站关键词优化推广哪家好
  • 微官网和手机网站一样吗百度免费推广平台
  • 网站seo设置珠海网站建设优化
  • it外包公司联系电话宁波seo关键词
  • 淘宝优惠券网站开发哪个合肥seo好
  • 企业网站设计制作收费企业网络推广的方法
  • 云南做网站哪家便宜公司的seo是什么意思
  • 亚洲最新永久在线观看seo程序
  • 做网站需要几天西安百度快照优化
  • 网站改版 被百度k如何免费推广自己的网站
  • 网站建设网站服务流程网站关键词优化怎么弄
  • 长春建设平台网站的公司吗女教师网课入侵录屏
  • 陕西城乡建设网百度网站怎样优化排名
  • 可以上传自己做的视频的网站吗百度网盘怎么用
  • 免费 微网站垂直搜索引擎
  • 做公司网站要多少钱中山口碑seo推广