给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。

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

插入一个字符
删除一个字符
替换一个字符
示例 1:

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

输入: word1 = "intention", word2 = "execution"
输出: 5
解释: 
intention -> inention (删除 't')
inention -> enention (将 'i' 替换为 'e')
enention -> exention (将 'n' 替换为 'x')
exention -> exection (将 'n' 替换为 'c')
exection -> execution (插入 'u')

思路:dp,三种情况都表示一下

拓展题:每种操作都有个代价,求最小代价,一个意思,加上代价即可。

class Solution {public int minDistance(String word1, String word2) {int n = word1.length();int m = word2.length();int i,j;if (n * m == 0)return n + m;int [][] d = new int[n + 1][m + 1];for (i = 0; i < n + 1; ++i) d[i][0] = i;for (j = 0; j < m + 1; ++j) d[0][j] = j;for (i = 1; i < n + 1; ++i) {for (j = 1; j < m + 1; ++j) {int left = d[i - 1][j] + 1;int down = d[i][j - 1] + 1;int left_down = d[i - 1][j - 1];if (word1.charAt(i - 1) != word2.charAt(j - 1))left_down += 1;d[i][j] = Math.min(left, Math.min(down, left_down));}}return d[n][m];}
}

leetcode72 编辑距离相关推荐

  1. Leetcode--72.编辑距离(java)

    给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: ...

  2. 动态规划经典题之编辑距离

    文章目录 题目 解题思路 (1)基本过程 (2)动态规划-递归 (3)动态规划-dp table 代码 题目 leetCode72:编辑距离 编辑距离算法是一个非常实用的算法,它的作用是求出把一个字符 ...

  3. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  4. LeetCode算法题整理(200题左右)

    目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...

  5. leetcode解题总览

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  6. 【代码随想录】-动态规划专题

    文章目录 理论基础 斐波拉契数列 爬楼梯 使用最小花费爬楼梯 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 背包问题--理论基础 01背包 二维dp数组01背包 一维数组(滚动数组) 装满背包 ...

  7. Leetcode动态规划专题(共38道)

    某一问题有很多重叠子问题 每一状态一定由上一状态推导出来 而贪心没有状态推导,而是直接选局部最优 解决方式: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历 ...

  8. 【精品计划1】动态规划入门到熟悉,看不懂来打我啊

    持续更新...... 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳 ...

  9. 【进大厂的leetcode必刷题】之目录汇总

    只要看下面几个面试概率大的leetcode题目即可,二刷.三刷.四刷都行.不求题海战术,只要掌握几个经典的类型就能应付大部分面试公司. 题目实时更新中 二叉树 1.leetcode108.将有序数组转 ...

最新文章

  1. 19个语法助你打牢Python基础
  2. UITextField 键盘
  3. sge resnet
  4. python与excel表格-如何用python处理excel表格
  5. (chap8 确认访问用户身份的认证) DIGES认证(摘要认证)
  6. shiny html5代码,javascript – Shiny:如何正确包含Shiny HTML
  7. 阿里 双11 同款流控降级组件 Sentinel Go 正式GA,云原生服务稳稳稳
  8. 玩家可以输入辅助指令_最后生还者 第二部辅助功能详解 盲人玩家也能玩
  9. AlphaFold2开源了,不是土豪也不会编程的你怎么蹭一波?
  10. Linux 命令(112)—— unalias 命令(builtin)
  11. ubuntu下显示文件按数字排序
  12. nodejs基础 -- 全局对象
  13. 四元素与欧拉角之间的转换
  14. vuex实例方法replaceState解决vuex页面刷新数据丢失问题
  15. react小书,怎么渲染列表(react)
  16. 英语12个月份的英文和缩写
  17. 【Yolov5】训练自己的yolov5模型并集成到安卓应用中【上】——模型训练
  18. 计算机买什么固态硬盘,固态硬盘买什么接口好?那么多接口到底选哪种?看完这个秒懂...
  19. "中国东信杯"广西大学第二届程序设计竞赛(同步赛)
  20. 全球及中国吊链总成行业研究及十四五规划分析报告

热门文章

  1. MFC之CAsyncSocket详解
  2. 串口与modem流量控制大全(2)
  3. 搞IT也不能不懂“五险一金”啊
  4. 对Multi-bin 技术的理解
  5. 设计模式C++实现(3)——建造者模式
  6. modf函数C语言,C / C ++中的modf()
  7. aix linux运维,运维老司机分享的八个AIX日常运维经验及案例
  8. docker php composer 使用_「PHP编程」如何使用Docker制作自己的LNMP/LAMP镜像
  9. ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】
  10. java +号变空格_base64码通过http传输 +号变 空格 问题解决