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];
    }
相关推荐
云雀衔光2 小时前
多个 MCP Server 怎么编排:数据库 / Redis / Git / 飞书一把梭
java·数据库·人工智能·redis·git·语言模型·飞书
CarIise2 小时前
C语言字符串基础:从char数组到双指针反转算法
算法
佳児素花痴╮2 小时前
C++速通2
开发语言·c++·算法
慧都小妮子2 小时前
GcExcel 服务端 Excel 组件:无需安装 Office 的 Java/.NET 报表方案
java·.net·excel·gcexcel·服务端excel组件
卓怡学长2 小时前
w236基于springboot应用型本科院校共享在线考试系统
java·spring boot·spring·intellij-idea
程序员清风2 小时前
从 JVM 内存模型到 GC 调优:Java 服务性能优化实战
java·jvm·性能优化
麻瓜code2 小时前
【LeetCode】相交链表:双指针法,一次遍历找到交点
算法·leetcode·链表
Joolun商城源码_Java2 小时前
Java 商城技术栈怎么选:单体、微服务还是前后端分离多端?
java·开发语言·微服务
拒绝内耗。2 小时前
一个请求进入 Java 应用后,怎么找到我们写的方法?
java·开发语言
夕除2 小时前
redis--013
java·开发语言