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

网站开发手机端免费开源网站

网站开发手机端,免费开源网站,建造网站的软件,系统开发工具有哪些代码随想录动态规划part12|115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇 115.不同的子序列 -- 递推公式略难理解583. 两个字符串的删除操作72. 编辑距离编辑距离总结篇 115.不同的子序列 – 递推公式略难理解 leetcode题目链接 代码随想录文档讲…

代码随想录动态规划part12|115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇

    • 115.不同的子序列 -- 递推公式略难理解
    • 583. 两个字符串的删除操作
    • 72. 编辑距离
    • 编辑距离总结篇

115.不同的子序列 – 递推公式略难理解

leetcode题目链接
代码随想录文档讲解

思路

s中有多少种删除字符串的方式使之变为t

  1. dp数组定义,dp[i][j]: (i-1) 为结尾的s与 j-1为结尾的t的个数

  2. 递推公式
    if(s[i-1]=t[j-1]) dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
    else dp[i][j] = dp[i-1][j] 注意:这里是dp[i-1][j],不是j-1
    如果两个元素相等,可以使用这个元素也可以不使用s中的这个元素
    如果不相同,就要删除s中这个元素再进行计算
    在这里插入图片描述

  3. 初始化: dp[i][0] = 1(s不空,t为空), dp[0][j] = 0 (s为空),dp[0][0] = 1

  4. 遍历顺序
    从左到右,从上到下

python代码

class Solution:def numDistinct(self, s: str, t: str) -> int:if len(s) < len(t):return 0dp = [[0]*(len(t)+1) for _ in range(len(s)+1)]for i in range(len(s)+1):dp[i][0] = 1for i in range(1, len(s)+1):for j in range(1, len(t)+1):if s[i-1] == t[j-1]:dp[i][j] = dp[i-1][j-1] + dp[i-1][j]else:dp[i][j] = dp[i-1][j]return dp[-1][-1]   

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

leetcode题目链接
代码随想录文档讲解

思路

本题递推公式较为好像,但第一次提交初始化出错未通过
初始化注意:dp[i][0] = i;dp[0][j] = j

python代码

class Solution:def minDistance(self, word1: str, word2: str) -> int:dp = [[0]*(len(word2)+1) for _ in range(len(word1)+1)]for i in range(len(word1)+1):dp[i][0] = ifor j in range(len(word2)+1):dp[0][j] = jfor i in range(1, len(word1)+1):for j in range(1, len(word2)+1):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]+2, dp[i-1][j]+1, dp[i][j-1]+1)return dp[-1][-1]
class Solution(object):def minDistance(self, word1, word2):m, n = len(word1), len(word2)# dp 求解两字符串最长公共子序列dp = [[0] * (n+1) for _ in range(m+1)]for i in range(1, m+1):for j in range(1, n+1):if word1[i-1] == word2[j-1]:dp[i][j] = dp[i-1][j-1] + 1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])# 删去最长公共子序列以外元素return m + n - 2 * dp[-1][-1]

72. 编辑距离

leetcode题目链接
代码随想录文档讲解

思路

  1. dp数组定义
    dp[i][j] 以i-1为结尾的word1和以j-1为结尾的word2最少操作次数

  2. 递推公式
    两种情况:if dp[i-1] == dp[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, dp[i-1][j-1]+1) (删除元素和添加元素是逆向操作,操作次数一致,只需要考虑一种即可)(替换一个元素,使word1中这个元素和word2中这个元素相同)

  3. 初始化
    dp[i][0] = i 和 dp[0][j] = j 注意

  4. 遍历顺序
    从前往后,从左往右

python代码

class Solution:def minDistance(self, word1: str, word2: str) -> int:dp = [[0]*(len(word2)+1) for _ in range(len(word1)+1)]for i in range(len(word1)+1):dp[i][0] = ifor j in range(len(word2)+1):dp[0][j] = jfor i in range(1, len(word1)+1):for j in range(1, len(word2)+1):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-1][j], dp[i][j-1]) + 1return dp[-1][-1]  

编辑距离总结篇

代码随想录文档讲解

http://www.dtcms.com/wzjs/109533.html

相关文章:

  • 做网站时如何上传图片短链接购买
  • java动态web网站开发广告推广系统
  • html可以做网站分页在线生成网页网站
  • 如何推广网站业务竞价外包代运营公司
  • 低代码开发工具seo 优化是什么
  • 菏泽企业网站建设企业网站营销优缺点
  • 做网站怎样用链接赚钱怎么推广销售
  • 营销型网站一套网络seo推广培训
  • 国内可以上的网站网络营销的基本职能
  • 网站 入站规则 设置优化设计电子版在哪找
  • 自助建站自己要做网站的来看下查询收录
  • 全方位营销型网站云seo关键词排名优化软件
  • 开源门户网站建设方案如何在各种网站投放广告
  • 怎么查网站icp微信怎么推广引流客户
  • 教师网站建设机培训体会免费下载给大家科普一下b站推广网站
  • 龙岗区住房和建设局官方网站100个成功营销策划案例
  • 网站开发质保金南京网络优化公司有哪些
  • 网站弹出信息怎么做的seo首页优化
  • 漯河 做网站产品关键词的搜索渠道
  • 免费政府网站搜索引擎优化的办法有哪些
  • 北京网页制作网络公司杭州seo培训
  • 兴安盟做网站公司alexa排名查询统计
  • 网站登录注册怎么做google搜索引擎入口下载
  • 北京模板网站建设网络营销公司网络推广
  • 网站开发跟app开发的差别河南百度关键词优化排名软件
  • 邢台网站制作哪里有深圳搜狗seo
  • 新竹网站国内真正的免费建站
  • 免费网站建设培训学校汕头网站关键词推广
  • 怎么建一个网站卖东西31省市新增疫情最新消息
  • 网站空间 数据库国际新闻最新消息今天军事新闻