LeetCode 72. Edit Distance

72.Edit Distance(编辑距离)

 

题目:

  给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。

  你可以对一个单词进行如下三种操作:

    1. 插入一个字符
    2. 删除一个字符
    3. 替换一个字符

思路:

  多次选择试图得到最优解,那么考虑动态规划。

  先假设word1有len1位,word2有len2位,建立数组step,step[i][j]就代表我们要将word1前 i 位转换为word2前 j 位的最少数量。

  此时word1查找到第 i+1 位字母a,word2查找到第 j+1 位字母b,我们直接比较这两个字母,能得到两种情况:

  1.a=b:那么就不需要操作,此时word1前 i+1 位替换为word2前 j+1 位只需要step[i][j]步

    即为   step[ i+1 ][ j+1 ] = step[ i ][ j ] 

  2.a!=b:就要在给定的三种操作方式中选择最优解,再增加一步操作即可

    即为   step[ i+1 ][ j+1 ] = Min(num1,num2,num3);

  最后得到的step[ i ][ j ]就是最短编辑距离。

 

图解:

  首先建立数组,将红色部分赋值,之后开始按照顺序计算,从word1转换为word2,step[ i ][ j ]就是最短编辑距离,step[ i-1][ j ]就是插入,step[ i ][ j-1 ]就是删除,step[ i-1 ][ j-1 ]就是修改,如果不相同就从三种决策中寻找最小值加一,相同就直接添加,值等于step[ i-1 ][ j-1 ]。

  例如AB->ABC(大号红色字体),B和C不同,左侧(AB->AB)0次,左上(A->AB)1次,上方(A->ABC)2次,选择三种情况最小值,再进行一步操作(左侧AB->AB->ABC),只需要1次。

  或者ABDC->ABC(大号蓝色字体),C与C相同,直接进行左上(ABD->AB-ABC),也只需要1次。

  

 

代码:

  

  

 

 

    

posted @   cheng102e  阅读(149)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示