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

Leetcode 72 编辑距离

题意理解:

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

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

                插入一个字符

                删除一个字符

                替换一个字符

        将word1转换为word2,可以进行三种操作:增、删、改,最少操作几次

        其中特别注意:增和删为互逆操作,其效果是一样的:在word1删除一个元素或在word2添加一个元素,都是进行一次操作效果。

        这里我们使用动态规划来进行解题。

解题思路:

        (1)定义dp数组

                dp[i][j]表示word1第i个元素前,word2第j个元素前,使word1转换为word2最少需要操作的次数。

        (2)递推公式:

           当word1[i-1]==word2[j-1]时

            无需操作: dp[i][j]=dp[i-1][j-1]

          否则:

                增|删:dp[i-1][j]+1   或   dp[i][j-1]+1

                改:    dp[i-1][j-1]+1

                即: dp[i][j]=Math.min(Math.min(dp[i-1][j]+1 ,dp[i][j-1]+1),  dp[i-1][j-1]+1 )

          (3) 初始化:

                dp[i][0] 表示把word1变为空串,则产出i个元素,即dp[i][0]=i

                同理: dp[0][j]=j                       

1.动态规划解题

public int minDistance(String word1, String word2) {int [][] dp=new int[word1.length()+1][word2.length()+1];for(int i=0;i<=word1.length();i++){dp[i][0]=i;}for(int j=1;j<=word2.length();j++){dp[0][j]=j;}for(int i=1;i<=word1.length();i++){for(int j=1;j<=word2.length();j++){if(word1.charAt(i-1)==word2.charAt(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])+1,dp[i-1][j-1]+1);}}}return dp[word1.length()][word2.length()];}

2.复杂度分析 

时间复杂度:O(n^2)

空间复杂度:O(n^2)

相关文章:

Leetcode 72 编辑距离

题意理解&#xff1a; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符 删除一个字符 替换一个字符 将word1转换为word2,可以进行三种操作&#xff1a;增、删、改&am…...

羊大师揭秘,如何挑选出好牧场的奶羊,该怎么看

羊大师揭秘&#xff0c;如何挑选出好牧场的奶羊&#xff0c;该怎么看 了解牧场的管理和环境&#xff1a;好的牧场应该有规范的管理制度&#xff0c;环境整洁&#xff0c;草场茂盛&#xff0c;为奶羊提供了充足的食物和良好的生活环境。在这样的牧场中&#xff0c;奶羊能够得到…...

MySQL数据库基础(八):DML数据操作语言

文章目录 DML数据操作语言 一、DML包括哪些SQL语句 二、数据的增删改&#xff08;重点&#xff09; 1、数据的增加操作 2、数据的修改操作 3、数据的删除操作 DML数据操作语言 一、DML包括哪些SQL语句 insert插入、update更新、delete删除 二、数据的增删改&#xff08…...

(09)Hive——CTE 公共表达式

目录 1.语法 2. 使用场景 select语句 chaining CTEs 链式 union语句 insert into 语句 create table as 语句 前言 Common Table Expressions&#xff08;CTE&#xff09;&#xff1a;公共表达式是一个临时的结果集&#xff0c;该结果集是从with子句中指定的查询派生而来…...

Spring 用法学习总结(四)之 JdbcTemplate 连接数据库

&#x1f409;目录 9 JdbcTemplate 9 JdbcTemplate Spring 框架对 JDBC 进行了封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 相关包&#xff1a; 百度网盘链接https://pan.baidu.com/s/1Gw1l6VKc-p4gdqDyD626cg?pwd6666 创建properties配置文件 &#x1f4a5;注意…...

第 385 场 LeetCode 周赛题解

A 统计前后缀下标对 I 模拟 class Solution { public:int countPrefixSuffixPairs(vector<string> &words) {int n words.size();int res 0;for (int i 0; i < n; i)for (int j i 1; j < n; j)if (words[i].size() < words[j].size()) {int li words[…...

什么是RabbitMQ?

一、引言 RabbitMQ是一个开源的消息代理软件&#xff0c;用于在分布式系统中传递消息。它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c;提供了一种可靠的、强大的、灵活的消息传递机制&#xff0c;使得不同应用程序或组件之间可以轻松地进行通信。 二、概念…...

JWT登录验证前后端设计与实现笔记

设计内容 前端 配置全局前置路由守卫axios拦截器登录页面和主页 后端 JWT的封装登录接口中间件放行mysql数据库的连接 详细设计 路由设计 配置全局前置守卫&#xff0c;如果访问的是登录页面则放行&#xff0c;不是则进入判断是否有token&#xff0c;没有则拦截回到登录…...

自定义类型详解 ----结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段&#xff1f; 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合&#xff08;共同体&#xff09; 1.联合体类型的声明以…...

VueCLI核心知识综合案例TodoList

目录 1 拿到一个功能模块首先需要拆分组件&#xff1a; 2 使用组件实现静态页面的效果 3 分析数据保存在哪个组件 4 实现添加数据 5 实现复选框勾选 6 实现数据的删除 7 实现底部组件中数据的统计 8 实现勾选全部的小复选框来实现大复选框的勾选 9 实现勾选大复选框来…...

关于cuda路径问题

问题&#xff1a;Could not load dynamic library ‘libcudart.so.11.0’ 原因&#xff1a;调用系统环境下的cuda但系统环境没有装cuda 解决&#xff1a; 1.在系统环境装cuda&#xff0c;但如果每权限就不好操作&#xff1b; 2.用虚拟环境装好的cuda路径丢给环境变量 暂时性&am…...

六、Spring/Spring Boot整合ActiveMQ

Spring/Spring Boot整合ActiveMQ 一、Spring整合ActiveMQ1.pom.xml2.Queue - 队列2.1 applicationContext.xml2.2 生产者2.3 消费者 3.Topic - 主题3.1 applicationContext.xml3.2 生产者3.3 消费者 4.消费者 - 监听器4.1 编写监听器类4.2 配置监听器4.3 生产者消费者一体 二、…...

树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务

树莓派4B&#xff08;Raspberry Pi 4B&#xff09;使用docker搭建springBoot/springCloud服务 前提&#xff1a;本文基于Ubuntu&#xff0c;Java8&#xff0c;SpringBoot 2.6.13讲解 准备工作 准备SpringBoot/SpringCloud项目jar包 用 maven 打包springBoot/springCloud项目&…...

数据库设计、JDBC、数据库连接池

数据库设计 数据库设计概念 数据库设计就是根据业务 系统的具体需求&#xff0c;结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系? 数据库设计的步骤…...

SpringBoot实现OneDrive文件上传

SpringBoot实现OneDrive文件上传 源码 OneDriveUpload: SpringBoot实现OneDrive文件上传 获取accessToken步骤 参考文档&#xff1a;针对 OneDrive API 的 Microsoft 帐户授权 - OneDrive dev center | Microsoft Learn 1.访问Azure创建应用Microsoft Azure&#xff0c;使…...

C++初阶:容器适配器介绍、stack和queue常用接口详解及模拟实现

介绍完了list类的相关内容后&#xff1a;C初阶&#xff1a;适合新手的手撕list&#xff08;模拟实现list&#xff09; 接下来进入新的篇章&#xff0c;stack和queue的介绍以及模拟&#xff1a; 文章目录 1.stack的初步介绍2.stack的使用3.queue的初步介绍4.queue的使用5.容器适…...

GRUB and the Boot Process on UEFI-based x86 Systems

background info : BIOS and UEFI-CSDN博客 The UEFI-based platform reads the partition table on the system storage and mounts the EFI System Partition (ESP), a VFAT partition labeled with a particular globally unique identifier (GUID). The ESP contains EFI a…...

2.C语言——输入输出

1.字符输入输出函数 1.输入:getchar() 字面意思&#xff0c;接收单个字符&#xff0c;使用方法 char a; a getchar();实际上效果等同于char a; scanf("%c",&a);2.输出:putchar() 2.格式化输入输出函数 1.输入:scanf() 格式&#xff1a; scanf(“格式控制…...

MySQL篇之SQL优化

一、表的设计优化 表的设计优化&#xff08;参考阿里开发手册《嵩山版》&#xff09;&#xff1a; 1. 比如设置合适的数值&#xff08;tinyint int bigint&#xff09;&#xff0c;要根据实际情况选择。 2. 比如设置合适的字符串类型&#xff08;char和varchar&#xff09…...

QGis —— 1、Windows10下载安装QGis及插件

QGis官网 QGIS&#xff08;自由开源的地理信息系统&#xff09;是一个专业的GIS应用程序&#xff0c;它建立在免费和开源软件&#xff08;FOSS&#xff09;之上&#xff0c;并为此而自豪。QGIS 是一个方便使用的开源地理信息系统 (GIS)&#xff0c;根据 GNU 通用公共许可授权。…...

STM32F103C8T6最小系统板避坑指南:从ST-LINK接线到Keil5乱码,新手必看的5个实战问题

STM32F103C8T6最小系统板避坑指南&#xff1a;从ST-LINK接线到Keil5乱码&#xff0c;新手必看的5个实战问题 第一次点亮STM32开发板的LED时&#xff0c;那种成就感就像电子工程师的"成人礼"。但通往成功的路上往往布满荆棘——接错一根线可能导致整晚的调试失败&…...

从人脸变形到地形编辑:拆解RBF(径向基函数)在游戏与仿真中的另类用法

从人脸变形到地形编辑&#xff1a;拆解RBF&#xff08;径向基函数&#xff09;在游戏与仿真中的另类用法 当游戏角色面部需要自然扭曲表情时&#xff0c;当虚拟地形需要实时生成连绵山脉时&#xff0c;图形开发者们往往面临同一个数学挑战&#xff1a;如何用少量控制点驱动复杂…...

Taotoken模型广场选型功能在实际开发中的使用感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken模型广场选型功能在实际开发中的使用感受 1. 选型起点&#xff1a;从分散查询到集中浏览 在接入大模型进行功能开发时&am…...

CircuitFusion:多模态AI在集成电路设计中的革命性应用

1. 集成电路设计的多模态革命&#xff1a;CircuitFusion技术解析在AI芯片设计领域&#xff0c;一个令人头疼的现实是&#xff1a;随着芯片复杂度呈指数级增长&#xff0c;传统设计流程已难以应对。以7nm工艺节点为例&#xff0c;单个芯片可能包含数十亿个晶体管&#xff0c;设计…...

量子纠缠认证协议原理与工程实践

1. 量子纠缠认证协议的核心原理量子纠缠作为量子力学最反直觉的现象之一&#xff0c;在信息安全领域展现出独特优势。当两个量子比特形成贝尔态时&#xff0c;无论相隔多远&#xff0c;对其中一个粒子的测量会瞬间决定另一个粒子的状态。这种非局域关联特性&#xff0c;成为构建…...

LabVIEW变量实战指南:从局部、全局到共享变量的高效数据流设计

1. 温度监控系统设计中的变量选择困境 第一次用LabVIEW做温度监控系统时&#xff0c;我在变量选择上栽过大跟头。当时为了图省事&#xff0c;把所有传感器数据都塞进了全局变量&#xff0c;结果系统运行半小时后就开始卡顿&#xff0c;报警响应延迟高达5秒——这对工业场景简直…...

软考高级之系统架构师之系统安全性和保密性设计(二)

认证 PKI/CA 参考PKI/CA体系介绍。 Kerberos Kerberos是一种网络认证协议&#xff0c;其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证&#xff0c;无需基于主机地址的信任&#xff0c;不要求网络上所有主…...

别再为导入报错发愁了!手把手教你用Parasolid格式把SolidWorks模型完美导入Adams(附常见错误排查)

从SolidWorks到Adams的模型导入实战指南&#xff1a;避坑技巧与深度解析 在工程仿真领域&#xff0c;SolidWorks和Adams的组合堪称黄金搭档——前者负责精确建模&#xff0c;后者专精多体动力学分析。但这对"黄金组合"的第一次握手往往让工程师们抓狂&#xff1a;模型…...

【软考高级架构】论文范文20——论软件设计方法及其应用

论软件设计方法及其应用 摘要 软件设计是将需求分析结果转换为软件体系结构和内部实现细节的关键活动,设计方法的选择直接影响系统的可维护性、可扩展性和开发效率。结构化设计、面向对象设计、数据驱动设计等经典方法各有侧重,在不同场景下展现出独特的优势。本文以笔者主…...

Circuit Playground Express 硬件解析与四步编程实战:从创客入门到项目开发

1. 项目概述&#xff1a;为什么选择 Circuit Playground Express 作为创客起点 如果你对硬件编程、物联网或者智能设备感兴趣&#xff0c;但又被 Arduino Uno 上密密麻麻的杜邦线和面包板劝退&#xff0c;或者觉得树莓派 Zero 的 Linux 系统门槛太高&#xff0c;那么 Adafruit…...