美文网首页
编辑距离

编辑距离

作者: 赵老拖 | 来源:发表于2022-05-29 19:10 被阅读0次

描述

给定两个字符串 str1 和 str2 ,请你算出将 str1 转为 str2 的最少操作数。
你可以对字符串进行3种操作:
1.插入一个字符
2.删除一个字符
3.修改一个字符。

image.png

思路:
1、初始条件: 假设第二个字符串为空,那很明显第一个字符串子串每增加一个字符,编辑距离就加1,这步操作是删除;同理,假设第一个字符串为空,那第二个字符串每增加一个字符,编剧距离就加1,这步操作是添加。 dp[i][0] 和 dp[0][j] 初始化从1开始

2、如果str1 i位置对应 str2 j位置相等字符,那么操作次数与两个子串的前一个相同dp[i][j] = dp[i-1][j-1];
如果不相等, dp[i][j] = Math.min(dp[i-1][j-1],Math.min(dp[i-1][j],dp[i][j-1]))+1;

 public int editDistance (String str1, String str2) {
        // write code here
        int length1 = str1.length();
        int length2 = str2.length();
        int[][] dp = new int[length1+1][length2+1];
        for(int i = 1;i<=length1;i++){
            dp[i][0] = dp[i-1][0]+1;
        }
        for(int i = 1;i<=length2;i++){
            dp[0][i] = dp[0][i-1]+1;
        }
        for(int i = 1;i<=length1;i++){
             for(int j = 1;j<=length2;j++){
                 if(str1.charAt(i-1) == str2.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-1][j],dp[i][j-1]))+1;
                 }
                     
             }
        }
        return dp[length1][length2];
    }

相关文章

  • 编辑距离及编辑距离算法

    无意间看到了有人问编辑距离算法,当时对这个概念很陌生,也就去学习了下,做下总结,记录下,好记性不如烂笔头。 编辑距...

  • 编辑距离

    https://leetcode-cn.com/problems/edit-distance/descriptio...

  • 编辑距离

    编辑距离

  • 编辑距离

    Levenshteinhttp://www.coli.uni-saarland.de/courses/LT1/20...

  • 编辑距离

    算法基本步骤: (1)构造 行数为m+1 列数为 n+1 的矩阵 , 用来保存完成某个转换需要执行的操作的次数,将...

  • 编辑距离

    题目: 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法...

  • 编辑距离

    为什么不同操作就是对应与d的左移上移或左上移?这个问题递归角度较易理解。DP角度,d记录的是目前最小编辑距离。左、...

  • 编辑距离

    讲解得不错

  • 编辑距离

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/edit...

  • 编辑距离

    参考文章 https://www.jianshu.com/p/8e0204dbb765 编辑距离是针对两个字符串的...

网友评论

      本文标题:编辑距离

      本文链接:https://www.haomeiwen.com/subject/yktnprtx.html