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

公众号 链接wordpress网站seo快速排名

公众号 链接wordpress,网站seo快速排名,南昌网站排名优化报,高端网页设计培训583. 两个字符串的删除操作 给定两个单词 word1 和 word2 #xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1#xff1a; 输入: word1 sea, word2 eat 输出: 2 解释: 第一步将 返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1 输入: word1 sea, word2 eat 输出: 2 解释: 第一步将 sea 变为 ea 第二步将 eat 变为 ea示例 2: 输入word1 leetcode, word2 etco 输出4 思路 动态规划1 定义dp[i][j]以i-1为结尾的字符串word1和以j-1位结尾的字符串word2想要达到相等所需要删除元素的最少次数。 递推: 还是分为当前相等/不相等 相等则dp[i][j] dp[i - 1][j - 1];(不需要删除,次数不涨) 当word1[i - 1] 与 word2[j - 1]不相同的时候有三种情况 情况一删word1[i - 1]最少操作次数为dp[i - 1][j] 1(这里的1是删除i-1) 情况二删word2[j - 1]最少操作次数为dp[i][j - 1] 1(这里的1是删除j-1) 情况三同时删word1[i - 1]和word2[j - 1]操作的最少次数为dp[i - 1][j - 1] 2 初始化: 按照dp定义 首列初始化为列下标 首行初始化为行下标 动态规划2 求两字符串的最大公共子序列的长度, 然后用字符串长度去减 那么求最大公共子序列: 定义:dp[i][j] 表示以0 到 i-1为的字符串word1和以 0 到 j-1位的字符串word2两字符串的最长公共子序列长度 递推: 如果text1[i - 1] 与 text2[j - 1]相同那么找到了一个公共元素所以dp[i][j] dp[i - 1][j - 1] 1; 如果text1[i - 1] 与 text2[j - 1]不相同那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列取最大的。 初始化:按照dp定义 全0即可 代码 动态规划1 class Solution {public int minDistance(String word1, String word2) {//dp[i][j]以i-1为结尾的字符串word1和以j-1位结尾的字符串word2想要达到相等所需要删除元素的最少次数。int [][] dp new int [word1.length()1][word2.length()1];for(int i 0; i word1.length(); i){dp[i][0] i;}for(int j 0; j word2.length(); j){dp[0][j] j;}for(int i 1; i word1.length();i){for(int j 1; jword2.length(); j){if(word1.charAt(i-1) word2.charAt(j-1)){dp[i][j] dp[i-1][j-1];}else{//dp[i][j - 1] 1 dp[i - 1][j - 1] 2dp[i][j] Math.min(dp[i][j-1] 1, dp[i-1][j] 1);}}}return dp[word1.length()][word2.length()];} } 动态规划2 class Solution {public int minDistance(String word1, String word2) {//dp[i][j] 表示以0 到 i-1为的字符串word1和以 0 到 j-1位的字符串word2两字符串的最长公共子序列长度int [][] dp new int [word1.length()1][word2.length()1];for(int i 1; i word1.length();i){for(int j 1; jword2.length(); j){if(word1.charAt(i-1) word2.charAt(j-1)){dp[i][j] dp[i-1][j-1] 1;}else{dp[i][j] Math.max(dp[i-1][j], dp[i][j-1]);}}}return word1.length() word2.length() - 2 * dp[word1.length()][word2.length()] ;} } 72. 编辑距离  给你两个单词 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) 思路 定义:dp[i][j] 表示以下标i-1为结尾的字符串word1和以下标j-1为结尾的字符串word2最近编辑距离为dp[i][j]。 递推: 在确定递推公式的时候首先要考虑清楚编辑的几种操作整理如下 if (word1[i - 1] word2[j - 1])不操作 if (word1[i - 1] ! word2[j - 1])增删换 if (word1[i - 1] word2[j - 1]) 那么说明不用任何编辑dp[i][j] 就应该是 dp[i - 1][j - 1]即dp[i][j] dp[i - 1][j - 1]; if (word1[i - 1] ! word2[j - 1])此时就需要编辑了如何编辑呢 操作一word1删除一个元素那么就是以下标i - 2为结尾的word1 与 j-1为结尾的word2的最近编辑距离 再加上一个操作。 即 dp[i][j] dp[i - 1][j] 1; 操作二word2删除一个元素那么就是以下标i - 1为结尾的word1 与 j-2为结尾的word2的最近编辑距离 再加上一个操作。 即 dp[i][j] dp[i][j - 1] 1; 这里有同学发现了怎么都是删除元素添加元素去哪了。 word2添加一个元素相当于word1删除一个元素例如 word1 ad word2 aword1删除元素d 和 word2添加一个元素d变成word1a, word2ad 最终的操作数是一样 dp数组如下图所示意的 a a d---------- ---------------| 0 | 1 | | 0 | 1 | 2 |---------- ---------------a | 1 | 0 | a | 1 | 0 | 1 |---------- ---------------d | 2 | 1 |----------操作三替换元素word1替换word1[i - 1]使其与word2[j - 1]相同此时不用增删加元素。 可以回顾一下if (word1[i - 1] word2[j - 1])的时候我们的操作 是 dp[i][j] dp[i - 1][j - 1] 对吧。 那么只需要一次替换的操作就可以让 word1[i - 1] 和 word2[j - 1] 相同。 所以 dp[i][j] dp[i - 1][j - 1] 1; 综上当 if (word1[i - 1] ! word2[j - 1]) 时取最小的即dp[i][j] min({dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1]}) 1; 初始化:按照dp定义 首列初始化为列下标 首行初始化为行下标 代码 class Solution {public int minDistance(String word1, String word2) {int len1 word1.length(), len2 word2.length();//word1 0到i-1转为 word2 0到j-1的最少操作数int [][] dp new int [len1 1][len2 1];for(int i 0; i len1 ; i){dp[i][0] i;}for(int j 0; j len2; j){dp[0][j] j;}for(int i 1; ilen1; i){for(int j 1; j len2; j){if(word1.charAt(i-1) word2.charAt(j-1)){dp[i][j] dp[i-1][j-1];}else{int del1 dp[i-1][j] 1; // 删除word1中字符i-1int del2 dp[i][j-1] 1; // 删除word2中字符j-1//删除某个word中的字符 与 在另一个word中添加 是等价的 故只需要计算删除即可int rep dp[i-1][j-1] 1; //替换字符int min Math.min(del1, del2);min Math.min(min, rep);dp[i][j] min;}}}return dp[len1][len2];} } 编辑距离总结篇    代码随想录 (programmercarl.com)
http://www.w-s-a.com/news/771772/

相关文章:

  • 网站后期推广是谁来做网页制作步骤作答题
  • 全屋装修设计定制整装成都网站优化多少钱
  • html5购物网站模板一个网站两个数据库
  • 个人网站怎么做微信支付网站建设项目介绍
  • 建网站合同网站适配移动端和PC端
  • 网站建设培训机构哪里好html5开发wap网站
  • 免费自助建站源码学而思网校官网
  • 中国最大的网站制作公司青海省高等级公路建设管局网站
  • 建设网站对服务器有什么要求吗wordpress去除更新提示
  • 找个为公司做网站的手机端原神
  • 邯郸手机建站价格公众号开发者权限哪里添加
  • wordpress模板电子书下载站微信app官方免费下载
  • 从哪些方面进行网站建设如何做网站的实时画面
  • 设计网站公司收费西安小程序开发公司有哪些
  • 如何建网站赚取佣金哪个网站可以做免费宣传
  • 万网手机网站seo方法
  • 免费制作网站app百度首页纯净版
  • 支持api网站开发wordpress排版Markdown
  • 赤峰做网站的logo设计软件在线制作
  • iis网站批量导入苏州最新新闻事件今天
  • 甘肃省住房和城乡建设厅注册中心网站首页沈阳专业关键词推广
  • 网站怎么能在百度搜到网站开发费怎么做会计分录
  • 嘉定专业网站制作公司七星彩网站开发
  • 网站建设人员培训企业网站开发模型图
  • 自己开发一个网站应该怎么做国外设计网站 绿色的
  • 南昌外贸网站设计推广任务发布平台app
  • 建立网站成本书店网站建设可行性分析
  • 高端网站设计官网乌海学校网站建设
  • 哪些网站适合新手编程做项目优秀网页设计赏析
  • 永州网站seo德阳网站建设优化