当前位置: 首页 > news >正文

95.编辑距离

 72. 编辑距离

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

示例 1:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')

 【思路】

  • 定义状态:dp[i][j] 表示将 word1 的前 i 个字符转换成 word2 的前 j 个字符所需的最少操作数
  • 初始化边界:
    • i=0(word1 为空),需要插入 j 个字符才能得到 word2 的前 j 个字符 → dp[0][j] = j
    • j=0(word2 为空),需要删除 i 个字符才能得到空字符串 → dp[i][0] = i
     
  • 状态转移:
    • 如果 word1[i-1] == word2[j-1](当前字符相等),无需操作 → dp[i][j] = dp[i-1][j-1]
    • 如果 word1[i-1] != word2[j-1](当前字符不等),取「替换、删除、插入」三种操作的最小值 + 1:
      • 替换:dp[i-1][j-1] + 1(把 word1 [i-1] 换成 word2 [j-1]);
      • 删除:dp[i-1][j] + 1(删除 word1 [i-1]);
      • 插入:dp[i][j-1] + 1(在 word1 末尾插入 word2 [j-1]);
         
        dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1

【总结】

初始化:word1 为空 插入dp[0][i] = i;word1 一个也对不上dp[i][0] = i 全删掉

word1[i] == word2[j] 保持不变,不用加次数

否则插入、删除、替换的最小值+1

注意min一次只能比较两个值,先比较两个再比较两个。 

class Solution {public int minDistance(String word1, String word2) {int m = word1.length();int n = word2.length();// 创建dp数组,dp[i][j]表示word1前i个字符转word2前j个字符的最少操作数int[][] dp = new int[m + 1][n + 1];// 初始化:word1为空,需要插入j个字符for (int j = 0; j <= n; j++)  dp[0][j] = j; // 初始化:word2为空,需要删除i个字符for (int i = 0; i <= m; i++)  dp[i][0] = i; // 填充dp数组for (int i = 1; i <= m; i++) {char c1 = word1.charAt(i - 1);for (int j = 1; j <= n; j++) {char c2 = word2.charAt(j - 1);if (c1 == c2) {// 字符相等,无需操作,继承上一个状态dp[i][j] = dp[i - 1][j - 1];} else {// 字符不等,取替换、删除、插入的最小值 + 1dp[i][j] = Math.min(Math.min(dp[i-1][j-1], dp[i-1][j]), dp[i][j-1]) + 1;}}}// dp[m][n]即为整个word1转word2的最少操作数return dp[m][n];}
}

【记 dp定义+三种操作对应的dp】

 

http://www.jsqmd.com/news/381341/

相关文章:

  • 利润最大化的艺术:定价策略与需求弹性模型全解
  • OFA模型效果优化:注意力机制可视化分析
  • 实用指南:C#语言基础详解和面向对象编程核心概念与高级特性详解(万字详解带示例代码)
  • 开箱即用:granite-4.0-h-350m多语言模型快速上手体验
  • 一拖三恒压供水全套图纸程序:威纶通触摸屏与西门子s7-
  • 地震数据处理基本程序(MATLAB实现)
  • 揭秘携程任我行礼品卡回收市场:如何获得最高回收价? - 团团收购物卡回收
  • 2026年知名的施肥旋耕机一体机/旋耕机双侧传动款哪家强生产厂家实力参考 - 品牌宣传支持者
  • 携程任我行礼品卡真的能回收?详解靠谱变现流程! - 团团收购物卡回收
  • 从项目入手机器学习——(一)数据预处理(上) - 实践
  • RexUniNLU关系抽取实战:从新闻中提取关键信息
  • 2026年口碑好的履带打浆机/拖拉机带动打浆机制造厂家推荐哪家靠谱 - 品牌宣传支持者
  • 单北斗变形监测水库应用与维护系统的技术分析与实践
  • 题解:P5101 [JOI 2017 Final] 绳 / Rope
  • L4级自动驾驶车辆多模态融合感知实时控制技术深度剖析
  • 零配置体验:StructBERT中文情感分析WebUI全攻略
  • RexUniNLU快速上手:医疗领域实体识别零基础教学
  • GTE-Pro开源模型实操:使用ONNX Runtime部署提升跨平台兼容性
  • Qwen-Image-2512-SDNQ WebUI实战教程:批量生成头像壁纸+自动下载脚本编写
  • 携程任我行礼品卡如何快速回收?回收平台对比推荐! - 团团收购物卡回收
  • 12C总线和协议
  • 2026宁波有机认证高端红茶公司排行,实力企业大盘点,高山生态高端名优红茶/高端红茶,有机认证高端红茶定制厂家找哪家 - 品牌推荐师
  • 【面试手撕】如何构造二叉树输入用例?ACM模式,路径总和2解题思路 - 教程
  • 按字数算最便宜的降AI工具是哪个?帮你算清楚了
  • RESTful API设计:构建高并发DeepSeek-OCR服务接口
  • 携程任我行礼品卡废弃不用?回收流程全解析! - 团团收购物卡回收
  • 携程任我行礼品卡怎么回收?一步一步教你变现赚钱 - 团团收购物卡回收
  • RexUniNLU开箱即用:中文文本分类与情感分析教程
  • AI股票分析师daily_stock_analysis的数据库课程设计案例
  • Phi-4-mini-reasoning实战演练:从安装到解决复杂问题