30(牛客Top100)-72. 编辑距离

2023-05-16

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

思路:动态规划

1.状态定义
dp[i][j]表示把word1中0-i的子串变为word2中0-j的子串
2.初始化二维数组,容量加1保存初始值dp[0] = 0;
int[][] dp = new int[m + 1][n + 1];
3.状态方程
(1)如果word1[i] == word2[j],那么dp[i][j] = dp[i - 1][j - 1]
(2)否则,dp[i][j] = 1 + min(dp[i][j - 1], dp[i - 1][j], dp[i][j])
4.返回dp[m][n]

    public int miniDistance(String word1, String word2) {
        int m = word1.length();
        int n = word2.length();
        //判空
        if (m == 0 || n == 0) {
            return m + n;
        }
        //1.初始化二维数组
        int[][] dp = new int[m + 1][n + 1];
        //2.边界赋值
        for (int i = 0; i < m + 1; i++) {
            dp[i][0] = i;
        }
        for (int j = 0; j < n + 1; j++) {
            dp[0][j] = j;
        }
        //3.计算所有值
        for (int i = 1; i < m + 1; i++) {
            for (int j = 1; j < n + 1; j++) {
                if (word1.charAt(i - 1) == word2.charAt(j - 1)) {
                    dp[i][j] = dp[i - 1][j - 1];
                    continue;
                }
                dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i][j - 1], dp[i - 1][j - 1])) + 1;
            }
        }
        //4.返回dp[m][n]
        return dp[m][n];
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

30(牛客Top100)-72. 编辑距离 的相关文章

  • IDEA 远程debugger SpringBoot项目 超赞!!!

    如题哦 xff0c 项目发布到服务器上后 xff0c 每天被不同的bug所困扰 强大的idea超出你的想象 xff0c 强大到可以远程debugger xff0c 就和在本地一样一样的 进入正题 前提概要 线上即服务器代码必须与本地一致 x
  • git提交时 # Please enter the commit message for your changes. Lines starting # with ‘#‘ will be ignored

    问题 xff1a Please enter the commit message for your changes Lines starting with 39 39 will be ignored and an empty message
  • canal 修改配置信息后监听不到mysql数据并报错can‘t find start position for example

    原由 xff1a 数据库地址变化 canal 需要修改监听 问题 xff1a 修改配置信息后重启canal 但并无监听到数据库信息变化 分析 xff1a canal 与数据库之间断层 xff0c 导致信息传输失败 解决 xff1a xff0
  • win7 配置JDK环境变量

    第一步 xff1a 安装jdk 8u101 windows x64 exe xff0c 路径为默认路径 xff0c 一直下一步直到完成安装 安装最好不要修改安装路径 xff0c 防止自己找不到 第二步 xff1a 设置环境变量 xff1a
  • 完整的搭建内网穿透ngrok详细教程(有图有真相)

    如上 网上找到的都是不稳定的 还不如自己搭建一个 去问度娘了 xff0c 发现了一堆 好吧 xff0c 那就动手开干吧 准备工作 xff08 其实也是硬性条件 xff09 xff1a 1 服务器一台 2 备案域名一个 xff08 好多都说可
  • 入理解 SpringBoot 启动机制(starter 机制)

    深入理解 SpringBoot 启动机制 xff08 starter 机制 xff09 一 前言二 起步依赖三 自动配置 1 基于java代码的bean配置2 自动配置条件依赖3 Bean参数的获取3 Bean的发现4 Bean 加载四 总
  • Win10系统 禁止某个程序\软件联网

    个人比较注重隐私安全 xff0c 有时在电脑上安装某些软件 xff0c 又怕不安全 xff0c 我们可以直接禁止此软件接入互联网 这里我们以微信为例 xff0c 找到微信的启动程序 在桌面选择微信 xff0c 右键 gt 打开文件所在位置
  • fatal error: libnet.h: No such file or directory

    fatal error libnet h No such file or directory Q xff1a 在编译C源码的时候 xff0c 报了这个错误 A xff1a 查看 usr include 中是否有libnet h 头文件 如果
  • ARM学习之实现开机自动登录以及修改开机启动项

    由于寒假要留校做大创项目 xff0c 用到的开发板是ZLG的imx280a xff0c 开始学习ARM xff0c 做个记录方便查看 今天做的是实现开机自动登录以及修改开机启动项 一 xff0c 开机自动登录 1 首先我们在 bin目录下创
  • tensorflow在android上的实现,可以实时识别摄像头里的物体

    http download csdn net detail wuzuyu365 9791574
  • Centos安装VNC 搭建

    iso xff1a centos6 8 首先检查是否安装相应的软件包 root 64 localhost rpm qa grep tigervnc root 64 localhost 查看到没有安装包 xff0c 则安装 xff01 装包v
  • 冒泡排序及其时间、空间复杂度解析

    1 冒泡排序 1 概念及思路 xff1a 重复地走访过要排序的数列 xff0c 一次比较两个元素 xff0c 如果他们的顺序错误就把他们交换过来 走访数列的工作是重复地进行直到没有再需要交换 xff0c 也就是说该数列已经排序完成 这个算法
  • Unity中抛物线的实现

    什么是抛物线 xff1f 以数学知识来定义的话 xff0c 抛物线是在平面内到定点与定直线的距离相等的点的轨迹叫做抛物线 定点就是抛物线的焦点 xff0c 定直线就是抛物线的准线 从物理上来说的话 xff0c 抛物线就是将一个物体抛出去以后
  • Unity中常用的游戏存档/读档技术

    Unity中常用的游戏存档 读档技术 1 PlayerPrefs 是Unity提供的一个用于本地持久化保存与读取的类 xff0c 是以键值对的形式将数据写入到注册表中 xff0c 并且可以提供方法来按照键来取出对应的值应用到游戏中 xff0
  • Unity导出模型透明底图片,用于UI制作

    最近在制作一个钓鱼的游戏需要对钓到的不同种类的鱼进行统计 xff0c 但是没有找到合适的2D图片素材 xff0c 找了蛮久下载了一个3D模型素材包 xff0c 只有模型和材质没有对应的贴图 xff0c 当场裂开 xff01 尝试过使用快捷键
  • Unity中区分敌人在游戏角色的哪个位置

    Unity中区分敌人在游戏角色的哪个位置 基础的数学知识就默认大家都会啦 xff0c 如果不会的话就去了解一下蛮好理解的 主要是介绍一下判断方法 xff0c 一起来学习吧 xff01 实现步骤 1 新建场景 xff0c 这里就用Unity的
  • Unity中的图片循环滚动实现

    Unity中的图片循环滚动实现 1 单张图片的循环滚动 xff08 不仅限于背景的滚动 xff0c 是SpriteRenderer图片非UI图片 xff09 修改图片模式 创建材质并添加到SpriteRender中 实现原理 xff08 通
  • 菜鸟Android4.0 Settings分析(一)

    先声明 xff1a 本人工作半年 xff0c 是真的菜鸟 xff0c 之前有做过2 3的Launcher xff0c 没有记录下来 xff0c 感觉挺可惜的 xff0c 现在老大叫我搞Setting xff0c 我觉得是得写得东西 xff0
  • 【建议收藏】超详细的Canal入门,看这篇就够了。

    概述 canal是阿里巴巴旗下的一款开源项目 xff0c 纯Java开发 基于数据库增量日志解析 xff0c 提供增量数据订阅 amp 消费 xff0c 目前主要支持了MySQL xff08 也支持mariaDB xff09 背景 早期 x
  • 深度解析spring @Configuration配置类

    本章节我们来探索Spring中一个常用的注解 64 Configuration 我们先来了解一下该注解的作用是 xff1a 用来定义当前类为配置类 那啥是配置类啊 xff0c 有啥用啊 这个我们得结合实际使用场景来说 xff0c 通常情况下

随机推荐

  • 那些年我们踩过的坑-线程池核心线程数也有可能销毁重新创建

    这个坑我在我另一篇文章里提过 不过感觉挺重要的 所以单独列出来 https blog csdn net wwdwjm article details 99672803 一般我们都知道线程池初始化的时候会设置核心线程数CorePoolSize
  • windows编程经典书籍

    本人是刚刚开始学习windows编程的 感觉看雪学院的大牛很NB 想找一些书籍来看学习学习 可是不知道看哪些书好 驱动 对菜鸟们来说真是一个很深奥的话题 所以 我找来了这篇文章供大家分享 以后大家发现什么好书就在楼下跟贴吧 作者 xff1a
  • @PathVariable(“id“) String id和@RequestParam(“userName“) String username区别

    64 PathVariable 原始方式 xff1a deleteUser id 61 1 rest方式 xff1a user delete 1 64 PathVariable使用rest方式以路径方式传输数据到服务器中 SpringMVC
  • proteus仿真控制电机正转、反转和停止转动

    前言 本文主要介绍了 基于stm32单片机的电机驱动 在proteus仿真电路中 控制电机的正转 反转以及停止转动 一 代码部分 include stm32f10x h int main void nbsp nbsp nbsp void D
  • 对二维图像进行离散傅里叶变换

    一 二维傅里叶变换的原理和公式 对一个M行 N列的二维数字图像 其矩阵表示如下 则其二维离散傅里叶 DFT 的公式如下 正变换 nbsp nbsp nbsp nbsp 逆变换 nbsp nbsp nbsp nbsp nbsp
  • 我的英语学习

    define 定义 xff0c 给 下定义 be defined as 被规定 move up 提升 xff0c 晋升 corporate 公司 xff0c 集体 xff0c 公司的 xff0c 集体的 ladder 梯子 xff0c 阶梯
  • 对二维离散图像进行哈达玛变换

    目录 一 沃尔什变换简介 二 哈达玛变换简介 三 哈达玛变换的原理及公式 1
  • java变量笔记

    一 变量类型及使用 int age 61 20 double score 61 88 6 char gender 61 39 男 39 String name 61 34 jack 34 变量必须先声明后使用 xff1b 变量在同一作用域内
  • java运算符

    一 运算符介绍 运算符是一种特殊的符号 xff0c 用以表示数据的运算 xff0c 赋值和比较等 一些算数运算符 除法比较特殊 xff0c 取决于参与运算的数据类型 xff0c 例如10 4 61 2 xff0c 10 0 4 61 2 5
  • 在linux系统下中.sh文件无法执行的问题及两种解决方法

    在写了shell脚本1 sh文件后 xff0c 想要执行该脚本 xff0c 结果提示我权限不够 xff1a 然后我就加上了管理员的权限 xff1a xff08 其实这里提示的并不是管理员的权限不够 xff0c 而是这个shell脚本并没有执
  • makefile的简单实现

    这里是简单的关于makefile的一个实现案例 xff0c 目的是让一些类似于我这样没有接触过的小白 xff0c 切实的感受一下什么是makefile 首先找到一个空文件夹 xff0c 我们将在该文件夹下进行操作 1 创建并编辑hello
  • Java集合总结图

    Java集合总结图
  • Android keyguard之上如何显示Toast

    ENV Android M 6 0 1 锁屏之上应该如何显示Toast呢 xff1f 看下面的实现 xff1a public class KeyguardToast public static Toast makeText Context
  • 2021-11-01

    建立spring helloword工程 1 建立maven工程 命名为spring helloword 2 导入依赖 span class token generics span class token punctuation lt sp
  • 2021-11-04

    spring基础 Spring是一个轻量级的控制反转 IoC 和面向切面 AOP 的容器 xff08 框架 xff09 IOC Inversion of Control 控制反转 IOC创建对象的方式 1 默认通过无参构造器创建对象 spa
  • filter和sessionListener实现session超时退出功能,过滤掉轮询请求

    filter和sessionListener实现session超时退出功能 xff0c 过滤掉轮询请求 1 requestFilter span class token keyword public span span class toke
  • MVC web项目中引入jquery插件

    MVC web项目中引入jquery插件 1 下载jquery https jquery com 看到这样的文档 xff0c 直接CTRL 43 S保存到自己的文件夹 2 将文件夹中的js文件直接拖拽导入到项目中的web文件下 xff0c
  • 27(牛客Top100)-62. 不同路径

    一个机器人位于一个 m x n 网格的左上角 xff08 起始点在下图中标记为 Start xff09 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 xff08 在下图中标记为 Finish xff09 问总共有多少条不同
  • 28(牛客Top100)-64. 最小路径和

    给定一个包含非负整数的 m x n 网格 grid xff0c 请找出一条从左上角到右下角的路径 xff0c 使得路径上的数字总和为最小 说明 xff1a 每次只能向下或者向右移动一步 思路 xff1a 动态规划 1 状态定义 初始化二维数
  • 30(牛客Top100)-72. 编辑距离

    给你两个单词 word1 和 word2 xff0c 请你计算出将 word1 转换成 word2 所使用的最少操作数 你可以对一个单词进行如下三种操作 xff1a 插入一个字符 删除一个字符 替换一个字符 思路 xff1a 动态规划 1