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

力扣 72. 编辑距离 python AC

动态规划

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

定义状态dp[i][j]为:字符串1到第i位为止转化成字符串2到第j位为止需要的最少操作数

--初始化二维数组dp:size1+1行size2+1列

--处理边界:第0行/第0列表示空字符串1转化为字符串2/字符串1转化为空字符串2需要的操作数

(索引每+1,操作数+1,(需要增加/删去它长度次))

--从1到size1遍历i

  --从1到size2遍历j

    --如果字符串1第i位和字符串2第j位相等

      --dp[i][j] 和 dp[i - 1][j - 1] 相同(需要操作次数相同)

    --否则

      --dp[i][j] 为 dp[i - 1][j - 1](替换) dp[i - 1][j](删除)dp[i][j - 1] (插入)三者中的最小值 + 1

http://www.lryc.cn/news/348326.html

相关文章:

  • vue 发布项目
  • springBoot实现发送邮箱验证码 redis缓存源码
  • QT--4
  • 感染了后缀为.360勒索病毒如何应对?数据能够恢复吗?
  • JavaSE多态
  • M 有效算法
  • 知识付费系统制作,托管机构如何提高体验课转化率?要注意什么?
  • 【iOS逆向与安全】网上gw如何自动登录与签到SM2,SM3,SM4算法加解密
  • 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第14章 包管理helm v3
  • 蓝桥杯备战.19有奖问答dfs
  • 【JS红宝书学习笔记】第1、2章 初识JS
  • 学习java
  • Redis日常维护流程及技巧:确保稳定性与性能
  • 牛客华为机试题——难度:入门(python实现)
  • 数据结构与算法学习笔记之线性表五---循环链表的表示和实现(C++)
  • 微信小程序生命周期揭秘:从启动到消亡的全过程剖析【附代码】
  • Linux 下载 miniconda
  • 第十五篇:全面防护:构建不容侵犯的数据库安全策略与实战指南
  • 电脑快速搜索文件及文件夹软件——Everything
  • 02-登录页面、动态路由、权限等模块开发
  • 万物生长大会 | 创邻科技再登杭州准独角兽榜单
  • (六)Linux的Shell编程(上)
  • CANopen总线_CANOpen开源协议栈
  • Rust 语言不支持 goto 语句
  • uniapp日期区间选择器
  • k8s job
  • Python---NumPy万字总结【此篇文章内容难度较大,线性代数模块】(3)
  • 【面试经典题】环形链表
  • 【联合索引】最左匹配原则是什么?
  • LeetCode 700.二叉搜索树中的搜索