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 小时前
Maven 的 <packaging>pom</packaging> 都有哪些值
java·maven
段ヤシ.13 小时前
回顾Java知识点,面试题汇总Day13:数据库MySQL(持续更新)
java·数据库·mysql
W_LuYi18513 小时前
Tauri + Rust + Vue 3 打造极速轻量桌面应用
java·开发语言·vue.js·rust
工业胶粘剂技术14 小时前
单组分高温环氧结构胶 K-EP280 完整技术参数与工程选型分析
算法·制造
汉克老师14 小时前
GESP6级C++考试语法知识(五十五、动态规划----背包问题(八、混合背包)
c++·动态规划·dp·背包问题·gesp六级·混合背包问题
小张小张爱学习14 小时前
Java基础面试题
java·开发语言
宋哥转AI14 小时前
Java后端转AI Agent:技术栈全景图与从ReAct到多Agent协作实战
java·人工智能·agent
Mr.Entropy14 小时前
ecplise 导出maven依赖jar
java·maven·jar
ANnianStriver14 小时前
PetLumina 05 — App 端 UI 效果应用
java·ui·ai编程
不懂的浪漫14 小时前
10|Netty native epoll 与零拷贝:从 Java NIO 再往下看一层![
java·netty·nio