day112(3.14)——leetcode面试经典150

72. 编辑距离

72. 编辑距离

题目:

题解:

java 复制代码
class Solution {
    public int minDistance(String word1, String word2) {
        char[] w1 = word1.toCharArray();
        char[] w2 = word2.toCharArray();
        int[][] dp = new int[w1.length+1][w2.length+1];
        //进行设置初始:当i==0时,这说明word1此时没字符,那么只能通过插入字符来实现单词word2
        //当j==0时,这说明此时word2没有字符,那么只能通过删除word1来实现word2
        //具体要插入替换的次数是根据字符串长度进行增加的
        for(int i=0;i<=w1.length;i++) {
            dp[i][0]=i;
        }
        for(int i=0;i<=w2.length;i++) {
            dp[0][i]=i;
        }
        //进行递堆
        //状态转移方程是:如果当前i和j的字符相等,此时需要的最小步数就是dp[i-1][j-1]
        //如果当前i和j的字符不相等,也意味着,可以通过插入,删除,替换三种方式来使他们相等,只需要找到当前最小的步骤的方式,再加上1
        //这就意味着此时(i-1,j)->(i,j)的操作是删除
        //(i,j-1)-> (i,j)的操作是插入
        //(i-1,j-1)-> (i,j)的操作是替换
        //理清楚了这里就可以直接写代码
        for(int i=1;i<=w1.length;i++) {
            for(int j=1;j<=w2.length;j++) {
                if(w1[i-1]==w2[j-1]) {
                    dp[i][j]=dp[i-1][j-1];
                }
                else {
                    dp[i][j]=Math.min(Math.min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;
                }
            }
        }
        return dp[w1.length][w2.length];
    }
}
相关推荐
晨米酱3 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
爱学习的执念3 天前
助力金九银十1000道软件测试面试题(功能、接口、自动化、WEB、APP.......)附答案
软件测试·面试
小的~~3 天前
银河麒麟V10 ARM部署TDengine(涛思)工业时序数据库安装与测试
面试·程序员创富
2401_832298103 天前
人机协同:AI时代全新工作与学习范式
职场和发展
童园管理札记3 天前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
小刘在重生~3 天前
Oracle_day2 单行函数|组函数|分组|伪列|子查询|分页|多表连接
笔记·oracle·面试
Sam_Deep_Thinking3 天前
关于java final关键字的可见性
java·后端·面试·程序员
yuanxi2003 天前
卡塔尔能源公司LNG扩建项目首条生产线预计明年投运:大客户销售的5个判断
职场和发展·创业创新·学习方法