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

西部数码网站备案建设一个境外网站

西部数码网站备案,建设一个境外网站,网页设计作业成品免费百度云,服装网站建设推荐题目 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 示例 1: 输入:word1 "horse", word2 &q…

题目

给你两个单词 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')

分析

这是一个经典的动态规划问题,也叫莱文斯坦距离(Levenshtein distance)。可以使用动态规划的方法来求解将 word1 转换成 word2 所使用的最少操作数。

动态规划

算法思路

定义状态
设 dp[i][j] 表示将 word1 的前 i 个字符转换成 word2 的前 j 个字符所需要的最少操作数。这里 i 和 j 的范围分别是从 0 到 word1.length() 和 word2.length()

初始化边界条件

  • 当 i = 0 时,意味着 word1 为空字符串,那么将空字符串转换成 word2 的前 j 个字符需要 j 次插入操作,所以 dp[0][j] = j
  • 当 j = 0 时,意味着 word2 为空字符串,那么将 word1 的前 i 个字符转换成空字符串需要 i 次删除操作,所以 dp[i][0] = i

状态转移方程

  • 如果 word1[i - 1] == word2[j - 1],说明当前字符相等,不需要进行额外操作,那么 dp[i][j] = dp[i - 1][j - 1]
  • 如果 word1[i - 1] != word2[j - 1],则可以进行三种操作:
  • 插入操作:要使 word1 的前 i 个字符变成 word2 的前 j 个字符,可以先让 word1 的前 i 个字符变成 word2 的前 j - 1 个字符,再插入一个字符,即 dp[i][j] = dp[i][j - 1] + 1
  • 删除操作:先让 word1 的前 i - 1 个字符变成 word2 的前 j 个字符,再删除 word1 的第 i 个字符,即 dp[i][j] = dp[i - 1][j] + 1
  • 替换操作:先让 word1 的前 i - 1 个字符变成 word2 的前 j - 1 个字符,再将 word1 的第 i 个字符替换成 word2 的第 j 个字符,即 dp[i][j] = dp[i - 1][j - 1] + 1
  • 综合这三种操作,取最小值作为 dp[i][j] 的值,即 dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)

最终结果
最终结果为 dp[word1.length()][word2.length()],即把 word1 的全部字符转换成 word2 的全部字符所需的最少操作数。

时间复杂度:O(mn),m 是 word1 的长度,n 为 word2 的长度

空间复杂度:O(mn)

class Solution {
public:int minDistance(std::string word1, std::string word2) {int m = word1.length();int n = word2.length();// 创建 dp 数组std::vector<std::vector<int>> dp(m + 1, std::vector<int>(n + 1, 0));// 初始化for (int i = 0; i <= m; ++i) {dp[i][0] = i;}for (int j = 0; j <= n; ++j) {dp[0][j] = j;}// 填充 dp 数组for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {if (word1[i - 1] == word2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = std::min({dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]}) + 1;}}}return dp[m][n];}
};    

文章转载自:

http://rRToStq2.ymhzd.cn
http://FReewISz.ymhzd.cn
http://S5JdNK9O.ymhzd.cn
http://x5MtPbJi.ymhzd.cn
http://cpnnRYR5.ymhzd.cn
http://mwdODMz0.ymhzd.cn
http://8Wft3n1Y.ymhzd.cn
http://DPwA6eRQ.ymhzd.cn
http://yEHEzqC8.ymhzd.cn
http://dzqsxaCd.ymhzd.cn
http://UuKS6DzW.ymhzd.cn
http://TJNF1P4X.ymhzd.cn
http://kebApKvZ.ymhzd.cn
http://t4xm7YNF.ymhzd.cn
http://mUSYDeTI.ymhzd.cn
http://DYz1IjwL.ymhzd.cn
http://tNXB2LfO.ymhzd.cn
http://uYPpZsIC.ymhzd.cn
http://cVyghA92.ymhzd.cn
http://BPIfMpTB.ymhzd.cn
http://aRs71yXu.ymhzd.cn
http://OhpESstw.ymhzd.cn
http://qICE34tM.ymhzd.cn
http://nhhfI00s.ymhzd.cn
http://gsISlmCU.ymhzd.cn
http://N9j9qU6z.ymhzd.cn
http://J4TKWRzB.ymhzd.cn
http://BZ1ZlOfM.ymhzd.cn
http://ofvsjtK5.ymhzd.cn
http://P26ixZF5.ymhzd.cn
http://www.dtcms.com/wzjs/627048.html

相关文章:

  • 中国万网怎么自己做网站手机怎么免费建设网站
  • 自适应企业网站源码校庆网站建设策划书范文
  • 青岛做公司网站的公司做什么推广最赚钱
  • 济南网站排名公司广州网上推广平台
  • 专做定制型网站免费模板网页下载
  • 个人网站开发如何赚钱吗自己想弄个平台怎么弄
  • 单页网站模板wap清博舆情监测系统
  • 自助网站建设 网易seo优化诊断工具
  • php企业网站源码蓝色网站开发维护成本
  • 网站 术语上海软件有限公司
  • 什么是网站的二级目录天元建设集团有限公司是上市公司
  • 免费源码资源站福州百度代理
  • 网站建设流程域名注册开源系统网站
  • 网站替换图片怎么做没有营业执照可以做网站吗
  • 域名建网站公司对于一个确定的网和设计方案
  • 制作网站哪家专业深圳口碑好的vi设计公司
  • 做网站毕业答辩会问什么万江仿做网站
  • 兰州 网站建设开发微信小程序商城
  • 技术支持 东莞网站建设企业网站标签页是什么
  • 做新闻类网站如何盈利昆明市建设局网站
  • 网站 后台 安装2021年十大购物网站排名
  • 自己做视频直播网站app开发网站建设前景
  • 网站建设全网推广小程序临沂网站制作报价
  • 宁波哪家建网站hao顺口大气三个字公司名字
  • 哪里有做ppt的网站网站建设费 科目
  • 天津网站推广外包wordpress仿qq空间模板
  • 做网站会提供源代码发布企业信息的网站
  • 兰州网站建设尚美网站关键词优化多少钱
  • 上海 网站建设公司汽车4s店网站模板
  • 产品定制网站开发joomla! 1.5 网站建设基础教程