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

沈阳个人建站模板免费行情软件app网站下载大全

沈阳个人建站模板,免费行情软件app网站下载大全,app推广方式,日韩网站设计①、两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 事例: 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 "sea&…

①、两个字符串的删除操作

给定两个单词 word1 和 word2 ,返回使得 word1 和  word2 相同所需的最小步数

每步 可以删除任意一个字符串中的一个字符。

事例:

输入: word1 = "sea", word2 = "eat"
输出: 2
解释: 第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"

思路:

        使用动态规划,dp定义为:dp[i][j]表示word1从0到i - 1要跟word2从0到j - 1相同的最小删除次数。若word1[i - 1] == word2[j - 1],则此时不需要删除,dp[i][j] = dp[i - 1][j - 1]。若不相同,则需要删除其中一个,若删除word1,则dp变为i - 1与j匹配,dp[i][j] = dp[i - 1][j] + 1,若删除word2,则dp变为i与j - 1匹配,dp[i][j] = dp[i][j - 1] + 1,两者选择最小值即可。

动态规划:

        dp定义及含义:dp[i][j]表示word1从0到i - 1要跟word2从0到j - 1相同的最小删除次数。

        状态转移方程:if(word1[i - 1] == word2[j - 1]) dp[i][j] = dp[i - 1][j - 1]

                                else dp[i][j] = Math.min(dp[i - 1][j] + 1,dp[i][j - 1] + 1)

        初始化:第一行和第一列表示一个字符串到空串需要删除多少次,其实就是删除另一个字符串的长度,dp[i][0] = i , dp[0][j] = j。

        遍历顺序:两个for循环嵌套遍历

        dp[word1.length()][word2.length()]即为答案。

代码:

public int minDistance(String word1, String word2) {int[][] dp = new int[word1.length() + 1][word2.length() + 1];for(int i = 1;i <= word1.length();i++){dp[i][0] = i;}for(int j = 1;j <= word2.length();j++){dp[0][j] = j;}for(int i = 1;i <= word1.length();i++){for(int j = 1;j <= word2.length();j++){if(word1.charAt(i - 1) == word2.charAt(j - 1)){dp[i][j] = dp[i - 1][j - 1];}else{dp[i][j] = Math.min(dp[i - 1][j] + 1,dp[i][j - 1] + 1);}}}return dp[word1.length()][word2.length()];}

②、编辑距离

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

事例:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')

思路:

        与上一题类似,只是这道题多了插入和替换操作。对于两个字符串,其实存在逆向操作,如:像word1添加一个字符,也可以换为让word2删除一个字符。故不需要考虑只向word1或word2操作,和不需要考虑添加删除操作,只需要考虑删除和替换操作。

删除与上题一样,替换操作理解成:word1与word2需要替换其中一个字符,则只需要操作一次,在两者的前一个字符中选择一个替换,即dp[i][j] = dp[i - 1][j - 1] + 1。

动态规划:

        dp定义及含义:dp[i][j]表示word1从0到i - 1要跟word2从0到j - 1相同需要操作多少次。

        状态转移方程:if(word1[i - 1] == word[j - 1]) dp[i][j] = dp[i - 1][j - 1]

                                 else dp[i][j] = Math.min(dp[i - 1][j] + 1,dp[i][j - 1] + 1,dp[i - 1][j - 1] + 1)。

        初始化:dp[i][0] = i,dp[0][j] = j

        遍历顺序:两个for循环嵌套遍历

        dp[word1.length()][word2.length()]即为答案。

代码:

public int minDistance(String word1, String word2) {int[][] dp = new int[word1.length() + 1][word2.length() + 1];for(int i = 1;i <= word1.length();i++){dp[i][0] = i;}for(int j = 1;j <= word2.length();j++){dp[0][j] = j;}for(int i = 1;i <= word1.length();i++){for(int j = 1;j <= word2.length();j++){if(word1.charAt(i - 1) == word2.charAt(j - 1)){dp[i][j] = dp[i - 1][j - 1];}else{dp[i][j] = Math.min(dp[i - 1][j] + 1,Math.min(dp[i][j - 1] + 1,dp[i - 1][j - 1] + 1));}}}return dp[word1.length()][word2.length()];}

参考:代码随想录 (programmercarl.com)

http://www.ds6.com.cn/news/112577.html

相关文章:

  • 哪个网站可以做经济模拟题收录好的网站
  • 沪尚茗居全包价格长沙关键词优化平台
  • 宝山网站建设公司关键词优化的主要工具
  • 济南做网站公司排名苏州手机关键词优化
  • 微网站怎么自己做国外网络推广
  • 小规模企业所得税怎么算seo顾问阿亮
  • 做网站和做新媒体运营西安seo顾问公司
  • wordpress网站文件目录白帽seo
  • 可信的邢台做网站拉新推广怎么找渠道
  • 网站对不同分辨率seo是哪个英文的简写
  • 做名片赞机器人电脑网站是多少钱淘宝关键词怎么做排名靠前
  • 与魔鬼做交易的真实网站网站排名首页
  • 用ps做班级网站百度新闻网站
  • 手机端网站怎么做自媒体平台排名前十
  • 网站建设高度厦门网站快速排名优化
  • 新网站不被收录的原因网站建设营销型
  • 网站开发重庆网络营销推广的优势
  • 武汉大型网站建设营销和销售的区别
  • 易语言做返利网站下载优化大师
  • 专做五金批发的网站seo关键词优化提高网站排名
  • 郑州网站开发关键词排名点击软件网站
  • 贵州微信网站建设2023年5月疫情爆发
  • 单页网站是什么软件发布网
  • 微信小程序制作详细流程南京seo推广
  • 保定专业做网站的公司友情链接
  • 做网站 广告费 步骤建立免费个人网站
  • 上海找工作网站太原seo自媒体
  • 网站建设注意细节问题百度推广客服电话多少
  • 山西网站建设济南网络推广
  • b2b旅游网站建设百度seo排名点击软件