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];
    }
相关推荐
青云交20 分钟前
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
java·大数据·金融·数据采集·机器学习模型·java 大数据·金融衍生品定价
MCYH020632 分钟前
C++抽卡模拟器
java·c++·算法·概率·原神
pystraf32 分钟前
P10587 「ALFR Round 2」C 小 Y 的数 Solution
数据结构·c++·算法·线段树·洛谷
灰色人生qwer34 分钟前
内网服务器centos7安装jdk17
java·运维·服务器
ゞ 正在缓冲99%…36 分钟前
leetcode221.最大正方形
java·算法·动态规划
五行星辰36 分钟前
Java HttpURLConnection修仙指南:从萌新到HTTP请求大能的渡劫手册
java·开发语言·http
DataFunTalk37 分钟前
大模型时代数据科学岗位的未来思考
前端·后端·算法
cg501739 分钟前
Spring Boot 中的 Bean
java·前端·spring boot
anan46641 分钟前
基于langchain的长文本多迭代总结
java
努力也学不会java44 分钟前
【动态规划】深入动态规划 非连续子序列问题
java·数据结构·算法·leetcode·动态规划