LeetCode72编辑距离

题目描述

  

解析

  一般这种给出两个字符串的动态规划问题都是维护一个二维数组,尺寸和这两个字符串的长度相等,用二维做完了后可以尝试优化空间。这一题其实挺类似1143这题的,只不过相比1143的一种方式,变成了三种方式,就要找三个值,在其中取最小的那一个。

复制代码
public static int minDistance(String word1, String word2) {
        char[] w1 = word1.toCharArray();
        char[] w2 = word2.toCharArray();
        int len1 = word1.length();
        int len2 = word2.length();

        int[][] dp = new int[len1 + 1][len2 + 1];

        // 初始化第一行和第一列
        for (int i = 0; i <= len1; i++) {
            dp[i][0] = i;
        }
        for (int j = 0; j <= len2; j++) {
            dp[0][j] = j;
        }

        // 填充dp数组
        for (int i = 1; i <= len1; i++) {
            for (int j = 1; j <= len2; j++) {
                int cost = (w1[i - 1] == w2[j - 1]) ? 0 : 1;
                dp[i][j] = Math.min(dp[i - 1][j] + 1, // 删除
                        Math.min(dp[i][j - 1] + 1, // 插入
                                dp[i - 1][j - 1] + cost)); // 替换
            }
        }

        return dp[len1][len2];
    }
相关推荐
悠仁さん14 小时前
【C++】set map 使用
java·前端·c++
yuniko-n14 小时前
【JUC】Thread 内存泄露
java
freejackman14 小时前
【架构篇】双遍历 + 多栈协同:手撸 SQL 血缘引擎的架构思考
java·大数据·数据库·hive·sql·架构·spark
企业数字化笔记14 小时前
业务单据怎样接入流程中心?启动条件、实例关联与失败回退
java·spring boot·mysql
挖掘狂人14 小时前
同一个端口能不能被两个程序同时监听?
java·后端·程序员
codigger14 小时前
同一个端口能不能被两个程序同时监听?
java·后端·程序员·编程
西索斯coding14 小时前
qwen3.8-max-0902 和 minimax-m3 改真实仓库差多少?2026 年 50 个缺陷复现实测框架
java·服务器·网络·ai
2501_9339232514 小时前
SpringCloud:OpenFeign快速实现
java·后端·spring cloud·openfeign
denlaku15 小时前
JDK 26 新特性详解
java
SL_staff15 小时前
3分钟完成业务规则调整:告别代码修改,实现拖拽式逻辑配置
java·低代码·全栈