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];
    }
相关推荐
lengxuenong1 分钟前
枚举及其优化学习手册
c++·学习·算法·青少年编程
小O的算法实验室15 分钟前
IEEE TAI,RoCo:基于角色的LLM协作实现自动启发式设计
算法
小范的技术工坊20 分钟前
大模型蒸馏
人工智能·算法·数据挖掘·大模型
Benny_Tang24 分钟前
P9527 [JOIST 2022] 洒水器 / Sprinkler 题解
c++·算法
程序员清风26 分钟前
Java 智能体开发:从对话接口到任务执行
java·人工智能·python
一 乐33 分钟前
博客管理系统|基于springboot + vue博客管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕设
QuZhengRong39 分钟前
【Spring】后端接收的请求参数多了一个逗号的处理办法
java·后端·spring
ZealSinger40 分钟前
Go1.25容器感知GOMAXPROCS避限流
java·开发语言
cxoptics1 小时前
LBO 会不会潮解?存储、镀膜、日常使用注意事项?
java
kiracrimson1 小时前
希尔排序:让插入排序不再怕逆序
数据结构·算法·排序算法