原创

[百战LeetCode][57. 编辑距离(一)]


==========================努力奋斗财源广进==========================

一、算法题目

给定两个字符串 str1 和 str2 ,请你算出将 str1 转为 str2 的最少操作数。 你可以对字符串进行3种操作:

1.插入一个字符。 2.删除一个字符 3.修改一个字符。

1、我的题解

import java.util.*;
public class Solution {
    public int editDistance (String str1, String str2) {
        int n1 = str1.length();
        int n2 = str2.length();
        //dp[i][j]表示到str1[i]和str2[j]为止的子串需要的编辑距离
        int[][] dp = new int[n1 + 1][n2 + 1]; 
        //初始化边界
        for(int i = 1; i <= n1; i++) 
            dp[i][0] = dp[i - 1][0] + 1;
        for(int i = 1; i <= n2; i++)
            dp[0][i] = dp[0][i - 1] + 1;
        //遍历第一个字符串的每个位置
        for(int i = 1; i <= n1; i++) 
            //对应第二个字符串每个位置
            for(int j = 1; j <= n2; j++){ 
                //若是字符相同,此处不用编辑
                if(str1.charAt(i - 1) == str2.charAt(j - 1)) 
                    //直接等于二者前一个的距离
                    dp[i][j] = dp[i - 1][j - 1]; 
                else
                    //选取最小的距离加上此处编辑距离1
                    dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1])) + 1; 
            }
        return dp[n1][n2]; 
    }
}

2、优秀题解

//待定

三、解法心得

四、自我监督

评论区记录复习记录

  • 作者:北斗七点半联系作者
  • 发表时间:2023-06-03 14:27
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论