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

化妆品网站的建设 论文seo搜索引擎优化薪资

化妆品网站的建设 论文,seo搜索引擎优化薪资,电子商务平台开发建设,建立名词代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离 583. 两个字符串的删除操作72. 编辑距离 583. 两个字符串的删除操作 题目链接:583. 两个字符串的删除操作,难度:中等 【实现代码】 class Solution { publi…

代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离

  • 583. 两个字符串的删除操作
  • 72. 编辑距离

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

题目链接:583. 两个字符串的删除操作,难度:中等
【实现代码】

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));for (int i = 0; i <= word1.size(); i++) {dp[i][0] = i;}for (int j = 0; j <= word2.size(); j++) {dp[0][j] = j;}for (int i = 1; i <= word1.size(); i++) {for (int j = 1; j <= word2.size(); j++) {if (word1[i - 1] == word2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);}}}return dp.back().back();}
};

【解题思路】

动规五部曲

  1. 确定dp数组(dp table)以及下标的含义:dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。
  2. 确定递推公式:当word1[i - 1] 与 word2[j - 1]相同的时候,dp[i][j] = dp[i - 1][j - 1];
    当word1[i - 1] 与 word2[j - 1]不相同的时候,有三种情况:
    a) 情况一:删word1[i - 1],最少操作次数为dp[i - 1][j] + 1;
    b) 情况二:删word2[j - 1],最少操作次数为dp[i][j - 1] + 1;
    c) 情况三:同时删word1[i - 1]和word2[j - 1],操作的最少次数为dp[i - 1][j - 1] + 2
    最后当然是取最小值,所以当word1[i - 1] 与 word2[j - 1]不相同的时候,递推公式:dp[i][j] = min({dp[i - 1][j - 1] + 2, dp[i - 1][j] + 1, dp[i][j - 1] + 1});因为 dp[i][j - 1] + 1 = dp[i - 1][j - 1] + 2,所以递推公式可简化为:dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
  3. dp数组如何初始化:dp[i][0]:word2为空字符串,以i-1为结尾的字符串word1要删除多少个元素,才能和word2相同呢,很明显dp[i][0] = i。dp[0][j]的话同理
  4. 确定遍历顺序:遍历的时候一定是从上到下,从左到右
  5. 举例推导dp数组

72. 编辑距离

题目链接:72. 编辑距离,难度:困难
【实现代码】

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));for (int i = 0; i <= word1.size(); i++) {dp[i][0] = i;}for (int j = 0; j <= word2.size(); j++) {dp[0][j] = j;}for (int i = 1; i <= word1.size(); i++) {for (int j = 1; j <= word2.size(); j++) {if (word1[i - 1] == word2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + 1;}}}return dp.back().back();}
};

【解题思路】

动规五部曲

  1. 确定dp数组(dp table)以及下标的含义:dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。
  2. 确定递推公式:当word1[i - 1] 与 word2[j - 1]相同的时候,dp[i][j] = dp[i - 1][j - 1];
    当word1[i - 1] 与 word2[j - 1]不相同的时候,有三种情况:
    a)word1删除一个元素,那么就是以下标i - 2为结尾的word1 与 j-1为结尾的word2的最近编辑距离 再加上一个操作,即 dp[i][j] = dp[i - 1][j] + 1
    b) 操作二:word2删除一个元素,那么就是以下标i - 1为结尾的word1 与 j-2为结尾的word2的最近编辑距离 再加上一个操作。即 dp[i][j] = dp[i][j - 1] + 1;
    word2添加一个元素,相当于word1删除一个元素,例如 word1 = “ad” ,word2 = “a”,word1删除元素’d’ 和 word2添加一个元素’d’,变成word1=“a”, word2=“ad”, 最终的操作数是一样
    c) 只需要一次替换的操作,就可以让 word1[i - 1] 和 word2[j - 1] 相同。所以 dp[i][j] = dp[i - 1][j - 1] + 1;
  3. dp数组如何初始化:dp[i][0]:word2为空字符串,以i-1为结尾的字符串word1要删除多少个元素,才能和word2相同呢,很明显dp[i][0] = i。dp[0][j]的话同理
  4. 确定遍历顺序:遍历的时候一定是从上到下,从左到右
  5. 举例推导dp数组
http://www.yidumall.com/news/35883.html

相关文章:

  • 网站制作实训企业推广公司
  • 如果启动浏览器就能直接打开一个常用的网站主页_要怎么做?清远新闻最新消息
  • md5 wordpress朝阳seo推广
  • 徐州网站建设外包竞价托管推广多少钱
  • 目前做哪个网站致富郑州发布最新通告
  • 可以做填字游戏的网站新冠咳嗽怎么办
  • 临沂门户网站制作使用网站模板快速建站
  • 做触屏网站天津seo外包
  • qq网站登录入口seo百度关键词排名
  • b2b网站建设内容论文百度一下你就知道了官网
  • wordpress怎么修改css样式一点优化
  • 在阿里国际站做的网站百度seo如何优化关键词
  • 网站建设的过程包括几个阶段合肥网络推广平台
  • 湖南做网站公司有哪些广州抖音推广公司
  • WordPress访问数据插件西安百度seo排名
  • 怎么给网站做外链如何模板建站
  • 水滴保险官方网站百度付费推广
  • 第五冶金建设公司职工大学网站最近一周新闻热点大事件
  • 专业做网站的顺德公司外贸网站推广
  • 深圳网站建设合同建立一个国外的网站
  • 做自动发货网站重庆网
  • 做头像网站有哪些友情链接站长平台
  • 顺德新网站建设照片查询百度图片搜索
  • jsp网站建设项目实战 pdf谷歌浏览器在线入口
  • php开源网站河南做网站优化
  • 昆明网站开发怎样注册网站建立网页
  • 微信订单网站模版seo博客网站
  • 无锡手机网站建设成品短视频app源码的优点
  • 深圳做微信网站建设汕头seo建站
  • 网站小图标怎么做经典广告语