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

583. 两个字符串的删除操作 72. 编辑距离

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

        dp[i][j]:以i-1结尾的word1和j-1结尾的word2 变成相同字符串最少的步骤为dp[i][j]

        初始化dp[i][0],dp[0][j]为空字符串和第一个字符匹配的最少步骤,即i/j,删除对应的字符个数。dp[i][0]=i,dp[0][j]=j;

        遍历两个字符串。

        若word1[i-1]==word2[j-1],则不需要对当前字符进行删除操作,操作步骤和dp[i-1][j-1]相同

        dp[i][j]=dp[i-1][j-1];

        否则不相同,则有三种操作:

        ①删word1[i-1],删除一次: dp[i][j]=dp[i-1][j]+1;

        ①删word1[j-1],删除一次: dp[i][j]=dp[i][j-1]+1;

        ①删word1[i-1]和word2[j-1],删除两次: dp[i][j]=dp[i-1][j-1]+2;

        取三者的最小值得到当前的最小步骤。        

                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]+2));}

        最后返回dp[len1][len2]即为使两个字符串相同所需删除的最小步骤

72. 编辑距离

        dp[i][j]:[0,i-1]长度的word1和[0,j-1]长度的word2相同所需要的最少步骤为dp[i][j]

        初始化dp[i][0],dp[0][j]为空字符串和第一个字符匹配的最少步骤,即i/j,删除对应的字符个数。

         遍历两个字符串。

        若word1[i-1]==word2[j-1],则不需要对当前字符进行删除操作,操作步骤和dp[i-1][j-1]相同

        dp[i][j]=dp[i-1][j-1];

        否则不相同,则有三种操作:

        ①删除word1[i-1],进行一次删除操作: dp[i][j]=dp[i-1][j]+1;

        ②删除word1[j-1],进行一次删除操作: dp[i][j]=dp[i][j-1]+1;

        ③替换word1[i-1]为word2[j-1]/替换word2[j-1]为word1[i-1]: dp[i][j]=dp[i-1][j-1]+1;

注意:添加操作其实相当于删除操作。给word1添加一个元素和给word2删除一个元素所需步骤相同。

        最后取三者最小值。

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

        最后返回dp[len1][len2]即为最小步骤。

        

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

相关文章:

  • [多线程进阶] 常见锁策略
  • Scala - Idea 项目报错 Cannot resolve symbol XXX
  • 信息化发展与应用的新特点
  • 软件测试】测试时间不够了,我很慌?项目马上发布了......
  • MapReduce编程规范
  • Unity 如何实现游戏Avatar角色头部跟随视角转动
  • 深度学习优化算法总结
  • CMake详细使用
  • 【数据结构与算法】前缀树的实现
  • canvas 制作2048
  • playwright: 全局修改页面等待超时时间
  • C++类和对象(中)
  • Docker安装EalasticSearch、Kibana,安装Elasticvue插件
  • 算法训练营 day39 贪心算法 无重叠区间 划分字母区间 合并区间
  • c/c++开发,无可避免的文件访问开发案例
  • MySQL学习笔记
  • ccs导入工程失败的处理方法
  • 探针台常见的故障及解决方法
  • 域内资源探测
  • c# 将数据导出到EXCEL文件
  • 微服务 分片 运维管理
  • 批量占满TEMP表空间问题处理与排查
  • Pytorch中的tensor和variable
  • 暗月内网渗透实战——项目七
  • 【Java 面试合集】描述下Objec类中常用的方法(未完待续中...)
  • SQLSERVER 的 truncate 和 delete 有区别吗?
  • 【C++】CC++内存管理
  • 数据预处理之图像去空白
  • 真的麻了,别再为难软件测试员了......
  • 2月9日,30秒知全网,精选7个热点