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];
    }
相关推荐
糖果店的幽灵13 小时前
Spring AI 从入门到精通-Spring AI 是什么
java·人工智能·spring
不知名的老吴13 小时前
机器学习评价之基础指标
人工智能·算法·机器学习
Felven13 小时前
D. Divisible Pairs
算法
源代码杀手13 小时前
基于ROS2+Gazebo+RIVE的40项计算机视觉前沿机器人项目(含视觉算法原理与源码获取方式)
算法·计算机视觉·机器人
XiYang-DING13 小时前
【Java EE】TOCTOU
java·java-ee
.千余13 小时前
【C++】 String 常用操作:增删查改 | 查找 | 截取 | IO
java·服务器·开发语言·c++·笔记·学习
MrZhao40013 小时前
大模型量化到底在做什么:从浮点数表示到 Qwen FP8 实践
算法
长栎13 小时前
面试官说你的单例线程不安全,你真能现场修好?
java
JieE21213 小时前
LeetCode35. 搜索插入位置:二分查找的基础与细节
javascript·算法
码云骑士13 小时前
【Java基础】JDK安装常见问题教辅-从踩坑到排雷
java·开发语言