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

【将字符串变为空的编辑距离】

题目描述

求由s串变成t串的编辑距离
在s串的开头/末尾添加一个字符,花费p
在s串的开头/末尾添加一个s串的子串,花费q
每次作都是基于当前的s串
s串初始为空

分析

等价于将一个字符串变为空串的过程

第一层按照长度遍历(如果按照下标i,j遍历,在考虑左子串的时候,会用dp[r+1,j] + q更新dp[i][j],r+1 >=i, 会出现用未知值算未知值的情况)

考虑每一种状态转移:左子串,右子串,左开头,右开头

代码

# 求由s串变成t串的编辑距离
# 在s串的开头/末尾添加一个字符,花费p
# 在s串的开头/末尾添加一个s串的子串,花费q
# 每次作都是基于当前的s串
# s串初始为空# dp[i][j] 代表 从下标i的字符开始,到下标j的字符结束的子串 变为空需要的最小花费# 按照长度,考虑下标的边界情况,
# 转移时不能直接复制,取min
# 相同的数据类型进行比较def ans(s:str, p:int, q:int):n = len(s)dp = [[1e9]*(n+1) for i in range(n+1)] # 初始化最大dp[0][0] = pfor lenth in range(1, n+1):for i in range(n-lenth+1):j = i+lenth-1if i == j:dp[i][j] = pelse:              # 右边子串for l in range(i,j+1):sub_s = s[l:j+1]if sub_s in s[i:l]:dp[i][j] = min( dp[i][j], dp[i,l-1] + q )  # 左边子串for r in range(i,j+1):sub_s = s[i:r+1]if sub_s in s[r+1:j+1]:dp[i][j] = min( dp[i][j], dp[r+1,j] + q)  # 取min# 删一个字符dp[i][j] = min(dp[i][j], dp[i][j-1]+p, dp[i-1][j]+p)             return dp[0][n-1]
http://www.lryc.cn/news/438022.html

相关文章:

  • 卡特兰数的推理
  • 高精度治具加工的重要性和优势
  • 新版IDEA提示@Autowired不建议字段注入
  • adb的安装和使用 以及安装Frida 16.0.10+雷电模拟器
  • 解决移动端1px 边框优化的8个方法
  • 频带宽度固定,如何突破数据速率的瓶颈?
  • Linux网络编程 --- 高级IO
  • Python中给定一个数组a = [2,3,9,1,0],找出其中最大的一个数,并打印出来 求解?
  • 系统优化工具 | PC Cleaner v9.7.0.3 绿色版
  • JavaSE、JavaEE 与 JavaWeb 的详解与区别
  • HCIE和CCIE,哪个含金量更高点?
  • 2024.9.14 Python与图像处理新国大EE5731课程大作业,马尔可夫随机场和二值图割,校正立体图像的深度
  • 工业大模型市场图谱:53个工业大模型全面梳理
  • 【代码随想录训练营第42期 Day58打卡 - 图论Part8 - 拓扑排序
  • JVM内部结构解析
  • 誉龙视音频综合管理平台 RelMedia/FindById SQL注入漏洞复现
  • MATLAB系列01:MATLAB介绍
  • GEE 按范围导出 Sentinel-2 卫星影像
  • 队列OJ题——用队列实现栈
  • RK3588镜像打包制作,替换文件系统
  • Open-Sora代码详细解读(2):时空3D VAE
  • 基于微信平台的旅游出行必备商城小程序+ssm(lw+演示+源码+运行)
  • AI绘画:科技赋能艺术的崭新时代
  • 性能诊断的方法(四):自下而上的资源诊断方法和发散的异常信息诊断方法
  • GDPU Vue前端框架开发 计数器
  • 最大流笔记
  • el-tree父子不互相关联时,手动实现全选、反选、子级全选、清空功能
  • 模板与泛型编程笔记(一)入门篇
  • 浅谈WebApi
  • 9月14日,每日信息差