【CT】LeetCode手撕—72. 编辑距离

目录

  • 题目
  • 1- 思路
    • 动规五部曲
  • 2- 实现
    • ⭐72. 编辑距离——题解思路
  • 3- ACM 实现


题目

  • 原题连接:72. 编辑距离

1- 思路

模式识别:编辑举例 ——> 动态规划

动规五部曲

1.dp数组的含义

  • int[][] dp = new int[word1.length()][word2.length()];
  • i-1 为结尾的 word1 和 以 i-2 为结尾的 word2 的 最少操作次数

2.递推公式——比较元素

  • 2.1 相等 word1[i] == word2[j] :此时不考虑第 j-1 个元素和第 i-1 个元素
  • 2.2 不相等 word1[i] != word2[j]
    • 增 = 删:
      • 由于不相等,因此删除 word1 的元素,不考虑该元素 此时 =dp[i-1][j]
      • 也可以删除 word2 的元素,此时 =dp[i][j-1]
    • 替换 :此时 =dp[i-1][j-1] +1
  • 递推公式结论:三者里面取最小值

3.初始化

  • 由于递推公式,从上到下,从左到右 推导 ——> 初始化第一行 第一列
  • dp[i][0] = i ,代表 以 i-1 为结尾的 word1 变为 长为0 的字符串所需要的次数,以 i-1 结尾的字符串长度为 i,因为字符串的下标从 0 开始
  • dp[0][j] = j

4.遍历顺序

  • 外层 i1 遍历到 i<=wrod1.length
  • 内层 j1 遍历到 j<=word2.length

2- 实现

⭐72. 编辑距离——题解思路

在这里插入图片描述

class Solution {public int minDistance(String word1, String word2) {//1. 定义dp数组int[][] dp = new int[word1.length()+1][word2.length()+1];// 2.递推公式// 相等 dp[i][j] = dp[i-1][j-1];// 不相等 dp[i][j] = Math.min(dp[i-1]+1,dp[i-1][j-1]+1);//3.初始化for(int i = 0 ; i <= word1.length();i++){dp[i][0] = i;}for(int j = 0 ; j <= word2.length();j++){dp[0][j] = j;}//4.遍历for(int i = 1 ; i <= word1.length() ;i++){for(int j = 1 ; j <= word2.length();j++){if(word2.charAt(j-1)==word1.charAt(i-1)){dp[i][j] = dp[i-1][j-1];}else{dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+1));}}}return dp[word1.length()][word2.length()];}
}

3- ACM 实现

public class editDistance {public static int minDistance(String word1,String word2){//1.定义dp数组int[][] dp = new int[word1.length()+1][word2.length()+1];//2.递推公式// 相等 dp[i][j] = dp[i-1][j-1]// 不相等 dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+1));//3.初始化for(int i = 0 ; i <= word1.length();i++){dp[i][0] = i;}for(int j = 0 ; 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(word2.charAt(j-1) == word1.charAt(i-1)){dp[i][j] = dp[i-1][j-1];}else{dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+1));}}}return dp[word1.length()][word2.length()];}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str1 = sc.nextLine();String str2 = sc.nextLine();System.out.println("编辑距离是是"+minDistance(str1,str2));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windchill 相关配置

-Dhttp.proxyHostproxy.acme.com -Dhttp.proxyPort8080 -Dwt.rmi.clientSocketFactorywt.boot.WTRMIMasterSocketFactory -Dwt.rmi.javarmicgiservlet/JavaRMIServlet

6-47选择整数计算

整数计算&#xff1a; 用swing组件来实现整数计算&#xff0c;需要对整数计算的值进行校验。 import javax.swing.*; import java.awt.*; import java.awt.event.*;public class IntegerCalculator extends JFrame implements ActionListener {private JCheckBox[] checkBoxe…

【分布式文件系统HDFS】文件操作基本命令的使用

目录 一、按照下述要求写出相应的文件操作命令&#xff0c;执行并观察结果 1. 新建目录 1.1 在本地文件系统按要求创建如下的文件夹 1.2 在HDFS文件系统按要求创建如下的文件夹 2. 编辑文件test1.txt&#xff0c;放入本地文件夹 /opt/user/myfile 3. 使用moveFromLocal命令…

本地部署大模型的简单方法

https://ollama.com/https://ollama.com/ 在本地安装ollama windows版本。安装好后&#xff0c;就可以验证大模型了。 可以先测试一下qwen 0.5b&#xff0c;打开cmd&#xff0c;执行ollama run qwen:0.5b&#xff0c;首次会下载大模型的模型资源。 模型下好后就可以交互…

H5、Vue3、UniApp实现抖音短视频功能

H5、Vue3、UniApp实现抖音短视频功能 ml-swiper https://ext.dcloud.net.cn/plugin?id18973 可 0 配置&#xff0c;高性能、低代码、全端兼容 APP端效果图 微信小程序端效果图 Vue网页端效果图 ml-swiper 可 0 配置&#xff0c;高性能、低代码、全端兼容 APP端效果图 …

sitemap.xml生成(go语言版)

遍历一个文件夹及其子目录下的html文件&#xff0c;生成sitemap.xml package mainimport ("fmt""os""path/filepath""strings" )func main() {// 指定要遍历的文件夹htmlDir : E:\workPlace\project\AITools\web-ssg\.output\public/…

扩散模型 GLIDE:35 亿参数的情况下优于 120 亿参数的 DALL-E 模型

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

媒体邀约中媒体采访应该如何做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 在媒体邀约中&#xff0c;媒体采访应该遵循以下几个步骤和…

Python读取中文路径,出现乱码问题解决方案

Python读取中文路径&#xff0c;出现乱码问题解决方案 一、问题描述二、问题解决 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、问题描述 笔者在使用opencv读取带有中文路径的图片时&#xff0c;发现会出现乱…

2024.06.25 刷题日记

704. 二分查找 这种题有多种写法&#xff0c;我认为应该固定一种写法&#xff0c;从而养成自己的编程直觉&#xff0c;不然很容易造成思维混乱。二分查找说难不难&#xff0c;说简单也不简单。最难的点就是处理边界条件&#xff0c;有时候多个等号会通过&#xff0c;少个等号就…

SDN在5G网络中的具体作用是什么?

SDN&#xff08;Software-Defined Networking&#xff09;在5G网络中的具体作用主要体现在以下几个方面&#xff1a; 1. **网络切片&#xff08;Network Slicing&#xff09;**&#xff1a;5G网络的一个关键特性是网络切片&#xff0c;它允许运营商根据不同的服务需求创建多个虚…

【华为OD机试B卷】服务器广播、需要广播的服务器数量(C++/Java/Python)

题目 题目描述 服务器连接方式包括直接相连&#xff0c;间接连接。 A和B直接连接&#xff0c;B和C直接连接&#xff0c;则A和C间接连接。 直接连接和间接连接都可以发送广播。 给出一个N*N数组&#xff0c;代表N个服务器&#xff0c; matrix[i][j] 1&#xff0c; 则代表i和j直…

C++ 模板:全特化和偏特化

目录 全特化&#xff08;Full Specialization&#xff09; 偏特化&#xff08;Partial Specialization&#xff09; 特点和使用场景 注意事项 在C中&#xff0c;模板特化&#xff08;template specialization&#xff09;是一种强大的功能&#xff0c;允许对模板进行特定情…

2024最新算法:鳗鱼和石斑鱼优化(Eel and grouper optimizer,EGO)算法求解23个函数,MATLAB代码

一、算法介绍 鳗鱼和石斑鱼优化器&#xff08;Eel and grouper optimizer&#xff0c;EGO&#xff09;是2024年提出的一种智能优化算法&#xff0c;EGO算法的灵感来自海洋生态系统中鳗鱼和石斑鱼的共生相互作用和觅食策略。 参考文献&#xff1a; [1]A. Mohammadzadeh, S. Mi…

玩转数据库索引

1、概述 通常我们要对数据库进行优化&#xff0c;主要可以通过以下五种方法。 计算机硬件调优应用程序调优数据库索引优化SQL语句优化事务处理调优 本篇文章将向大家介绍数据库中索引类型和使用场合&#xff0c;本文以SQL Server为例&#xff0c;对于其他技术平台的朋友也是有…

DDL-表操作-数据类型

一.DDL-表操作-数据类型 MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期类型。 二.关系表 注意: 无符号和有符号的取值范围不是一样的,无符号需要加上UNSIGNED范围。 BLOB&#xff1a;用来描述二进制数据 TEXT:用来描述字符串 三.定长字符串和变长字符串 c…

【STM32入门学习】学习嵌入式实时操作系统(RTOS)移植uc/OS到stm32F103上

目录 一、建立STM32HAL库工程 1.1实时操作系统 1.2基于HAL库创建工程 二、获取uC/OS-III源码 三、移植准备 3.1复制uC/OS-III文件到工程文件夹 3.2添加工程组件和头文件路径 四、移植修改代码 &#xff14;.1.启动文件修改&#xff1a; &#xff14;.2.app_cfg.h &a…

Java Scanner 类

Java Scanner 类 java.util.Scanner 是 Java5 的新特征&#xff0c;我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法&#xff1a; Scanner s new Scanner(System.in);接下来我们演示一个最简单的数据输入&#xff0c;并通过 Scanner 类的 nex…

Scala 中yield 关键字

Scala 中yield 关键字 在 Scala 中&#xff0c;yield 关键字通常与 for 循环结合使用&#xff0c;用于生成一个集合&#xff08;通常是 List、Array 等&#xff09;。它的作用是将循环体中的每次迭代产生的值收集起来&#xff0c;并最终返回一个包含这些值的集合。 下面是一个简…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4

关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 4 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado、Quartus II 关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…