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];
    }
相关推荐
圣保罗的大教堂12 小时前
leetcode 874. 模拟行走机器人 中等
leetcode
Devin~Y12 小时前
大厂Java面试实战:Spring Boot/WebFlux、Redis+Kafka、K8s可观测性与Spring AI RAG/Agent三轮连环问
java·spring boot·redis·kafka·kubernetes·resilience4j·spring webflux
老约家的可汗13 小时前
搜索二叉树的概念及使用
java·开发语言
luoganttcc13 小时前
CUDA grid/block 到矩阵映射示例(矩阵加法)
人工智能·算法·机器学习
被摘下的星星13 小时前
Maven
java·maven
悟空码字13 小时前
别再重复造轮子了!SpringBoot对接第三方系统模板,拿来即用
java·spring boot·后端
yaaakaaang13 小时前
十七、迭代器模式
java·迭代器模式
我爱cope13 小时前
【从0开始学设计模式-8| 桥接模式】
java·设计模式·桥接模式
YuanDaima204813 小时前
Python 数据结构与语法速查笔记
开发语言·数据结构·人工智能·python·算法
Lsk_Smion13 小时前
Hot100(开刷) 之 环形链表(II)-- 随机链表的复制 -- 翻转二叉树
java·后端·kotlin·力扣·hot100