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

代码随想录算法训练营四十五天|115.不同的子序列、583.两个字符串的删除操作、72.编辑距离

题目链接:115. 不同的子序列 - 力扣(LeetCode)

class Solution(object):def numDistinct(self, s, t):""":type s: str:type t: str:rtype: int"""dp = [[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[len(s)][len(t)]

题目链接:1143. 最长公共子序列 - 力扣(LeetCode)

思路:算出公共子序列的最大长度,那么用两个字符串的长度减去公共的部分,就得到了需要操作的最少步数

class Solution(object):def minDistance(self, word1, word2):""":type word1: str:type word2: str:rtype: int"""result = 0dp = [[0] * (len(word2) + 1) for _ in range(len(word1) + 1)]for 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] + 1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])result = dp[i][j] if dp[i][j] > result else dp[i][j]return len(word2) + len(word1) - 2 * result

题目链接:72. 编辑距离 - 力扣(LeetCode)

思路:思路跟之前求公共子序列差不多 分为dp[i-1] == dp[j-1] 的情况 和dp[i-1] != dp[j-1]的情况 不等于的情况下分为三种 1.修改一个字符 2.删除一个字符 3.添加一个字符 并取其中的最小值。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt QT中QString 类的使用--获取指定字符位置、截取子字符串等
  • MobaXterm连接服务器
  • 解决Vite+Vue3打包项目本地运行html白屏和报错问题
  • 企业级开发——Git使用
  • C#面:ASP.NET MVC 中还有哪些注释属性用来验证?
  • 面试基本内容
  • 【Node】m1 mac 使用 nvm 安装 node v14 报错
  • Gartner报告解读:如何帮助企业完善数据分析与治理路线图
  • 生产环境中变态开启devtools(强制)
  • Kafka消息积压的典型场景及解决方案
  • python办公自动化:使用`Python-PPTX` 嵌入媒体文件
  • 智谱发布新一代基座模型
  • es、kibana及分词器的安装
  • 冲刺蓝桥杯第三章字符串
  • C语言通用函数 - 判断ip是否合法
  • 2017-08-04 前端日报
  • Android Volley源码解析
  • Angular4 模板式表单用法以及验证
  • Bootstrap JS插件Alert源码分析
  • Date型的使用
  • java中具有继承关系的类及其对象初始化顺序
  • JS函数式编程 数组部分风格 ES6版
  • LeetCode29.两数相除 JavaScript
  • MYSQL 的 IF 函数
  • 回顾 Swift 多平台移植进度 #2
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • ------- 计算机网络基础
  • 警报:线上事故之CountDownLatch的威力
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​Python 3 新特性:类型注解
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # Maven错误Error executing Maven
  • #mysql 8.0 踩坑日记
  • (3)STL算法之搜索
  • (九)One-Wire总线-DS18B20
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (七)Flink Watermark
  • (译) 函数式 JS #1:简介
  • (转)memcache、redis缓存
  • .net 7 上传文件踩坑
  • .Net FrameWork总结
  • .Net 执行Linux下多行shell命令方法
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使用反射注册事件
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET性能优化(文摘)
  • .NET学习教程二——.net基础定义+VS常用设置
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @开发者,一文搞懂什么是 C# 计时器!