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

自动网站建设系统cms网络软文范例

自动网站建设系统cms,网络软文范例,网站开发设计公,徐州建设工程交易平台​ LeetCode 583 两个字符串的删除操作 题目链接:https://leetcode.cn/problems/delete-operation-for-two-strings/ 思路: 方法一:两个子串同时删除元素 dp数组的含义 dp[i][j]dp[i][j]dp[i][j]代表以i-1为结尾的字符串word1,和以j-1位结…

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

题目链接:https://leetcode.cn/problems/delete-operation-for-two-strings/

思路:

方法一:两个子串同时删除元素

  • dp数组的含义
    dp[i][j]dp[i][j]dp[i][j]代表以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数

  • 递推公式
    本题有两种情况:
    word1[i - 1] == word2[j - 1]
    显然此时递推公式为:
    dp[i][j]=dp[i−1][j−1]+1dp[i][j] = dp[i-1][j-1]+1dp[i][j]=dp[i1][j1]+1
    word1[i - 1] != word2[j - 1]
    此时有三种情况:
    1. 删除word1里的第i-1个元素
    dp[i][j]=dp[i−1][j]+1dp[i][j] = dp[i-1][j]+1dp[i][j]=dp[i1][j]+1
    2. 删除word2里的第i-1个元素
    dp[i][j]=dp[i][j−1]+1dp[i][j] = dp[i][j-1]+1dp[i][j]=dp[i][j1]+1
    3. 同时删除word1和word2里的第i-1个元素
    dp[i][j]=dp[i−1][j−1]+1dp[i][j] = dp[i-1][j-1]+1dp[i][j]=dp[i1][j1]+1
    因为要求的是最小值,所以总的递推公式为:
    dp[i][j]=min(dp[i−1][j]+1,dp[i][j−1]+1,dp[i−1][j−1]+1)dp[i][j] = min({dp[i-1][j]+1, dp[i][j-1]+1, dp[i-1][j-1]+1})dp[i][j]=min(dp[i1][j]+1,dp[i][j1]+1,dp[i1][j1]+1)

  • 初始化
    dp[i][0]dp[i][0]dp[i][0]代表word1要和空字符相等需要多少次删除操作,显然为i;同理,dp[0][j]dp[0][j]dp[0][j]代表word2要和空字符 相等需要多少次删除操作,显然为j,所以初始化操作如下:

    for(int i = 0; i <= word1.size(); i++)  dp[i][0] = i;
    for(int j = 0; j <= word2.size(); j++)  dp[0][j] = j;
    
  • 遍历顺序
    显然遍历是从上到下,从左到右

代码:

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>>dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));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];elsedp[i][j] = min({dp[i][j - 1] + 1, dp[i - 1][j] + 1, dp[i - 1][j - 1] + 2});}}return dp[word1.size()][word2.size()];}
};

方法二:求出最长公共子序后,两个字符串分别减去最长公共子序的长度

  • dp数组的含义
    dp[i][j]dp[i][j]dp[i][j]代表以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2的最长公共子序的长度
  • 递推公式
    本题有两种情况:
    word1[i - 1] == word2[j - 1]
    显然此时递推公式为:
    dp[i][j]=dp[i−1][j−1]+1dp[i][j] = dp[i-1][j-1]+1dp[i][j]=dp[i1][j1]+1
    word[i - 1] != word[j - 1]
    例子:text1:abc text2:ace
    有两种情况:
    因为最后c和e不相同,所以可以是abc和ac相比,得出公共子序列的长度,也可以是ab和ace相比
    所以此时递推公式是:
    dp[i][j]=max(dp[i][j−1],dp[i−1][j])dp[i][j] = max(dp[i][j-1],dp[i-1][j])dp[i][j]=max(dp[i][j1],dp[i1][j])
  • 初始化
    dp[i][0]和dp[0][j]显然都是没有意义的,即二维数组的第一行和第一列,将其全部初始化为0即可。其余数值因为会在递推公式中被覆盖,所以也都初始化为0,这样可以使得代码相对简洁。
  • 遍历顺序
    显然遍历是从上到下,从左到右

代码

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>>dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));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] + 1;elsedp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}int result = word1.size() + word2.size() - 2 * dp[word1.size()][word2.size()];return result;}
};

总结

想到了第二种方法,第一种方法不相等时候的情况没有考虑清楚。


LeetCode 72 编辑距离

题目链接:https://leetcode.cn/problems/edit-distance/

思路:

  • dp数组的含义
    dp[i][j]dp[i][j] 表示以下标i-1为结尾的字符串word1变为以下标j-1为结尾的字符串word2的最小的操作数为。

  • 递推公式
    本题有两种情况:
    word1[i - 1] == word2[j - 1]
    此时说明需要继续向后修改即可。
    所以此时递推公式为:
    dp[i][j]=dp[i−1][j−1]dp[i][j] = dp[i-1][j-1]dp[i][j]=dp[i1][j1]

    word1[i - 1] != word2[j - 1]
    有三种操作方法:
    1. 删除word1的第i-1个元素
    此时递推公式为:
    dp[i][j]=dp[i−1][j]+1dp[i][j] = dp[i-1][j]+1dp[i][j]=dp[i1][j]+1
    2. 替换word1的第i-1个元素
    那么就要在dp[i−1][j−1]dp[i-1][j-1]dp[i1][j1](以i-2为结尾的word1子串和以j-2结尾的word2子串)的基础上对word1的第i-1个元素进行操作,所以此时递推公式为:
    dp[i][j]=dp[i−1][j−1]+1dp[i][j] = dp[i-1][j-1]+1dp[i][j]=dp[i1][j1]+1
    3. 在word1的第i-2个元素后添加一个元素
    在word1添加一个元素,相当于word2删除一个元素,例如 word1 = “a” ,word2 = “ad”,word2删除元素’d’ 和 word1添加一个元素’d’,变成word1=“ad”, word2=“a”, 最终的操作数是一样!
    所以此时递推公式为:
    dp[i][j]=dp[i][j−1]+1dp[i][j] = dp[i][j-1]+1dp[i][j]=dp[i][j1]+1
    dp数组如下图所示意

    	            a                         a     d+-----+-----+             +-----+-----+-----+|  0  |  1  |             |  0  |  1  |  2  |+-----+-----+   ===>      +-----+-----+-----+a |  1  |  0  |           a |  1  |  0  |  1  |+-----+-----+             +-----+-----+-----+d |  2  |  1  |+-----+-----+
    

    所以总体的递推公式为:
    dp[i][j]=min(dp[i−1][j]+1,dp[i][j]=dp[i−1][j−1]+1,dp[i][j]=dp[i][j−1]+1)dp[i][j] = min({dp[i-1][j]+1, dp[i][j] = dp[i-1][j-1]+1,dp[i][j] = dp[i][j-1]+1})dp[i][j]=min(dp[i1][j]+1,dp[i][j]=dp[i1][j1]+1,dp[i][j]=dp[i][j1]+1)

  • 初始化
    dp[i][0]dp[i][0]dp[i][0]代表word1要和空字符相等需要多少次删除操作,显然为i;同理,dp[0][j]dp[0][j]dp[0][j]代表word2要和空字符 相等需要多少次删除操作,显然为j,所以初始化操作如下:

    for(int i = 0; i <= word1.size(); i++)  dp[i][0] = i;
    for(int j = 0; j <= word2.size(); j++)  dp[0][j] = j;
    
  • 遍历顺序
    显然遍历是从上到下,从左到右

代码:

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>>dp(word1.size() + 1, vector<int>(word2.size()+ 1, 0));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];elsedp[i][j] = min({dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1});}}return dp[word1.size()][word2.size()];}
};

总结

重点要理解word1添加元素相当于word2删除元素


今日总结:

学习了编辑距离问题。


文章转载自:
http://polyhistor.hwLk.cn
http://exempla.hwLk.cn
http://allergic.hwLk.cn
http://underlayment.hwLk.cn
http://bistort.hwLk.cn
http://creatinuria.hwLk.cn
http://declinometer.hwLk.cn
http://derbylite.hwLk.cn
http://phenolic.hwLk.cn
http://truetype.hwLk.cn
http://teenage.hwLk.cn
http://ridgeway.hwLk.cn
http://outrank.hwLk.cn
http://prophetess.hwLk.cn
http://cassis.hwLk.cn
http://prearrangement.hwLk.cn
http://orderliness.hwLk.cn
http://dracontologist.hwLk.cn
http://gaekwar.hwLk.cn
http://mutoscope.hwLk.cn
http://enslave.hwLk.cn
http://scabbed.hwLk.cn
http://khalifate.hwLk.cn
http://freehold.hwLk.cn
http://xxix.hwLk.cn
http://pharmacology.hwLk.cn
http://bourgeoise.hwLk.cn
http://denazification.hwLk.cn
http://reinforcement.hwLk.cn
http://thalassocracy.hwLk.cn
http://mealanguage.hwLk.cn
http://dependably.hwLk.cn
http://vinificator.hwLk.cn
http://spiritedly.hwLk.cn
http://waterlog.hwLk.cn
http://asuncion.hwLk.cn
http://braw.hwLk.cn
http://cornelius.hwLk.cn
http://exacerbate.hwLk.cn
http://calcium.hwLk.cn
http://superinduce.hwLk.cn
http://damask.hwLk.cn
http://norse.hwLk.cn
http://katanga.hwLk.cn
http://sinistral.hwLk.cn
http://angina.hwLk.cn
http://fight.hwLk.cn
http://pruriency.hwLk.cn
http://vespers.hwLk.cn
http://sozin.hwLk.cn
http://ferrous.hwLk.cn
http://parody.hwLk.cn
http://kiel.hwLk.cn
http://contorted.hwLk.cn
http://concetto.hwLk.cn
http://episcope.hwLk.cn
http://morphogenic.hwLk.cn
http://vesicatory.hwLk.cn
http://leman.hwLk.cn
http://demodulation.hwLk.cn
http://caramba.hwLk.cn
http://gobemouche.hwLk.cn
http://hussar.hwLk.cn
http://busier.hwLk.cn
http://vibrato.hwLk.cn
http://rasse.hwLk.cn
http://carnalism.hwLk.cn
http://chaffinch.hwLk.cn
http://incontinence.hwLk.cn
http://bolshevistic.hwLk.cn
http://crenated.hwLk.cn
http://aunt.hwLk.cn
http://glosseme.hwLk.cn
http://batholithic.hwLk.cn
http://shelduck.hwLk.cn
http://asroc.hwLk.cn
http://pythogenic.hwLk.cn
http://reist.hwLk.cn
http://semimilitary.hwLk.cn
http://brenner.hwLk.cn
http://bibliopegistic.hwLk.cn
http://karelianite.hwLk.cn
http://smog.hwLk.cn
http://paradrop.hwLk.cn
http://earthstar.hwLk.cn
http://aesc.hwLk.cn
http://mark.hwLk.cn
http://glassworks.hwLk.cn
http://loomage.hwLk.cn
http://unmatched.hwLk.cn
http://fibrin.hwLk.cn
http://mendelevium.hwLk.cn
http://monk.hwLk.cn
http://patronymic.hwLk.cn
http://linson.hwLk.cn
http://trainband.hwLk.cn
http://morganite.hwLk.cn
http://est.hwLk.cn
http://millrace.hwLk.cn
http://inextenso.hwLk.cn
http://www.15wanjia.com/news/105434.html

相关文章:

  • 网站建设服务费费计入什么科目做网站需要什么条件
  • 东营企业网站seo微信营销推广
  • 高站网站建设最近的时事新闻
  • 全球影响力最大的人山东济南seo整站优化费用
  • 房地产公司网站 源码南宁百度seo推广
  • 宜宾市做网站多少钱营销计划
  • 网站提取规则怎么设置百度答主招募入口官网
  • 河南省新乡市建设委员会网站郴州网站seo
  • 江苏住房城乡建设厅网站百度网站推广价格查询
  • 网站路径改版如何做301重定向重庆seo研究中心
  • 网站开发的技术方案交换友情链接的条件
  • css汽车网站seo的基本步骤包括哪些
  • 软件公司网站模板图片西安核心关键词排名
  • 源码交易平台网站源码报个电脑培训班要多少钱
  • 建成学校网站百度指数有哪些功能
  • 做门户网站用什么模板做网站找哪个公司好
  • 别墅设计图纸及效果图大全seo优化费用
  • 如何做一份企业网站规划百度怎么发自己的小广告
  • 网站建设开源友情链接的英文
  • ai做网站步骤seo策略有哪些
  • 怎么写一个网站程序代做关键词收录排名
  • 徐州网站建设找哪家好seo的定义
  • 如何做企业网站小程序长春网站优化指导
  • 手机版网站版面设计怎么做搜索引擎优化工具有哪些
  • 免费的公众号排版工具广州seo公司如何
  • 自助公益网站建设拼多多搜索关键词排名
  • 珠海市网站开发公司电话百度推广官方网站登录入口
  • 去年做啥网站能致富外包网络推广公司
  • 河北网站建设开发百度指数分析报告
  • wordpress 审核插件济南公司网站推广优化最大的