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];
    }
相关推荐
苜蓿muxu8 分钟前
简述 ConcurrentHashMap 和 CopyOnWriteArrayList 的区别以及各自适用场景
java·编程语言
易小尊9 分钟前
Dixon-Coles 的 τ 函数,我写错了三次
算法
9527!到!14 分钟前
Springboot @value读取配置参数踩坑&推荐解决方案
java·spring boot·spring
十年Java程序媛23 分钟前
Java 面试常问 this、super:构造方法调用顺序避坑
java·开发语言·spring boot·面试·个人开发
3378033 分钟前
5分钟搞懂Spring的IoC和Bean管理
java
学到老活到老34 分钟前
类已经加载了,为什么静态代码还没执行?
java·jvm
学到老活到老35 分钟前
写了 new,就一定会在堆上分配对象吗?
java·jvm
Web极客码39 分钟前
决策模型 + LLM:用 Python 拆解浏览器自动化工作流
java·python·自动化
飞天小牛肉39 分钟前
线程池明明没到最大线程数,为什么任务还在排队?
java
用户0723670666041 分钟前
用 Groovy 做动态 Mock:参数分支、造真数据、模拟异常
java·groovy