记录每日LeetCode 72.编辑距离 Java实现

题目描述:

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

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

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

初始代码:

class Solution {public int minDistance(String word1, String 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')

参考答案:

// 大致意思: 将字符进行插入、替换、删除操作将word1转为word2的最少次数
// 解法采用动态规划: dp[i][j]表示word1前i个字符转为word2前j个字符的最少次数
class Solution {public int minDistance(String word1, String word2) {int w1 = word1.length();int w2 = word2.length();// 首先排除两者为空的情况if (w1 == 0 || w2 == 0) {return w1 + w2;}// 定义二维数组int[][] dp = new int[w1 + 1][w2 + 1];// word2为空 将word1转为word2的最少次数for (int i = 0; i <= w1; ++i) {dp[i][0] = i;}// word1为空 将word1转为word2的最少次数for (int j = 0; j <= w2; ++j) {dp[0][j] = j;}for (int i = 1; i <= w1; ++i) {for (int j = 1; j <= w2; ++j) {// 增: dp[i][j] = dp[i][j - 1] + 1// 删: dp[i][j] = dp[i - 1][j] + 1// 改: dp[i][j] = dp[i - 1][j - 1] + 1// 在这三种操作中比较出一个操作次数最少的dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1])) + 1;// 如果两个字符串相同索引处字母相同 那么"改"操作就不需要多加1次操作次数if (word1.charAt(i - 1) == word2.charAt(j - 1)) {dp[i][j] = Math.min(dp[i][j], dp[i - 1][j - 1]);}}}return dp[w1][w2];}
}

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

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

相关文章

WPF的WebBrowser控件

在 WPF 中显示网页&#xff0c;你可以使用 WebBrowser 控件来实现。WebBrowser 控件是一个嵌入式的浏览器控件&#xff0c;可以加载和显示网页内容。 以下是在 WPF 中显示网页的示例代码&#xff1a; <Window x:Class"WpfApp.MainWindow"xmlns"http://sche…

基于 ESP32-S3 的 Walter 开发板

Walter 是一款基于 ESP32-S3 且拥有 5G LTE 连接功能的新型开源开发套件。 近日&#xff0c;比利时公司 DPTechnics BV 推出了一款基于乐鑫 ESP32-S3 且拥有 5G LTE 连接功能的新型开源开发套件。该套件即将在 Crowd Supply 平台上发布&#xff0c;您可以点击此处了解详情。 无…

class068 更多的动态规划【算法】

class068 更多的动态规划【算法】 算法讲解068【必备】见识更多二维动态规划题目 code1 115. 不同的子序列 // 不同的子序列 // 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数 // 测试链接 : https://leetcode.cn/problems/distinct-subseque…

Mac如何设置control+space切换上一中输入法

#设置方法# *搜索输入法 系统设置-搜索&#xff1a;输入法&#xff0c;并点击键盘快捷键 *点击输入法&#xff0c;勾选&#xff1a;选择上一个输入法&#xff0c;点击完成。

漂亮的WPF界面 流行的一个界面,向上悬浮的窗口,终于试成功了

目前随便打开个APP&#xff0c;就可以看到一个悬浮的窗口 今天测试一下目前流行的一个界面&#xff0c;向上悬浮的窗口&#xff0c;终于试成功了。看着还不错的。

AcWing刷题(循环语句)------C语言版

1.&#xff08;708&#xff09;偶数&#xff1a; 编写一个程序&#xff0c;输出 11 到 100100 之间&#xff08;包括 11 和 100100&#xff09;的全部偶数。 输入格式 无输入。 输出格式 输出全部偶数&#xff0c;每个偶数占一行。 输入样例 No input 输出样例 2 4 6 ...…

详解FreeRTOS:事件标志组(高级篇—5)

目录 1、事件运作机制 2、事件标志组数据类型 3、创建事件标志组 4、设置事件位

.net core提示The xx field is required,One or more validation errors occurred

访问接口时缺少model中的参数时&#xff0c;会提示&#xff1a; The xx field is required One or more validation errors occurred原因是.net core webapi默认参数为不可空&#xff0c;因此会验证并报错。 解决方案&#xff1a; 在项目的.csproj中&#xff0c;修改Nullable…

php面试题

面试题1: 反转字符串 编写一个PHP函数&#xff0c;接受一个字符串参数&#xff0c;并返回该字符串的反转版本。 <?php function reverseString($str) {return strrev($str); }// 测试示例 $string "Hello, World!"; $reversedString reverseString($string);…

Leetcode—2960.统计已测试设备【简单】

2023每日刷题&#xff08;五十六&#xff09; Leetcode—2960.统计已测试设备 实现代码 int countTestedDevices(int* batteryPercentages, int batteryPercentagesSize) {int cnt 0;int ans 0;for(int i 0; i < batteryPercentagesSize; i) {int t batteryPercentage…

Linux软件管理:rpm软件包与yum管理工具

linux 软件 大家有想过平时我们使用的软件原本的样子都是什么嘛&#xff0c;像.exe 运行程序还有 linux 上的可执行文件&#xff0c;其实按照我的理解都是文件&#xff0c;使用想要规范的文本编写&#xff0c;然后经过编译的一个符合不同平台规范的可执行程序&#xff0c;本质就…

​logging --- Python 的日志记录工具​

源代码&#xff1a; Lib/logging/__init__.py Important 此页面仅包含 API 参考信息。教程信息和更多高级用法的讨论&#xff0c;请参阅 基础教程 进阶教程 日志记录操作手册 这个模块为应用与库实现了灵活的事件日志系统的函数与类。 使用标准库提供的 logging API 最主…

FIO jobs参数在Linux IO路径的解读

并发进程&#xff1a; fio工具可以创建多个并行运行的工作负载&#xff08;jobs&#xff09;&#xff0c;每个job代表一个独立的I/O线程。jobs参数决定了同时运行的job数量&#xff0c;这将直接影响到系统的资源分配和管理。 内核调度器&#xff1a; 在Linux内核中&#xff0c…

SpringBoot基础系列:工具类使用

断言 Assert // 要求参数 object 必须为非空&#xff08;Not Null&#xff09;&#xff0c;否则抛出异常&#xff0c;不予放行 // 参数 message 参数用于定制异常信息。 void notNull(Object object, String message) // 要求参数必须空&#xff08;Null&#xff09;&#xff…

c# 十进制整数格式化-(占位符,补齐)

.NET Framework : 4.7.2IDE : Visual Studio Community 2022OS : Windows 10 x64typesetting : Markdownblog : niaoge.blog.csdn.net 代码 using System;class Program { //主函数static void Main(){//整型Console.WriteLine(2.ToString("D3"));Console.WriteL…

装机必备 | 超赞OCR文本识别小工具 Text Scanner

Text Scanner 是一款功能强大的图片扫描工具软件,该软件利用光学字符识别技术&#xff0c;来将图片上的文字内容&#xff0c;直接转换为可编辑文本&#xff0c;实用性很强。 光学字符识别&#xff08;OCR&#xff09;&#xff1a;Text Scanner for Mac采用了先进的OCR技术&…

qt 使用百度在线地图 方法2

使用百度在线地图两个关键点&#xff0c;一是html页面准备&#xff1b;二是qt 与js 语言的交互。 1&#xff0c;html页面的准备&#xff0c;双击页面就可以出现如下效果。 主要代码&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"C…

【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出

前言 在使用Maven管理Java项目时&#xff0c;有时需要引入一些存放在系统特定位置的JAR文件。这些JAR文件可能是你自己编写的&#xff0c;也可能是其他来源的。无论是哪种情况&#xff0c;使用 Maven 的 system 范围和 systemPath 参数&#xff0c;可以方便地引入这些本地依赖…

主流全文搜索方案对比

Lucene 、 Solr 、 Elasticsearch 是目前主流的全文搜索方案&#xff0c;基于 倒排索引 机制完成快速全文搜索。 Lucene Lucene 是 Apache 基金会维护的一套完全使用 Java 编写的信息搜索工具包&#xff08; Jar 包&#xff09;&#xff0c;它包含了索引 结构、读写索引工具、…

Logstash输入Kafka输出Es配置

Logstash介绍 Logstash是一个开源的数据收集引擎&#xff0c;具有实时管道功能。它可以从各种数据源中动态地统一和标准化数据&#xff0c;并将其发送到你选择的目的地。Logstash的早期目标主要是用于收集日志&#xff0c;但现在的功能已经远远超出这个范围。任何事件类型都可…