day 48|● 583. 两个字符串的删除操作 ● 72. 编辑距离

news2024/10/5 21:25:37

583. 两个字符串的删除操作

dp的含义:指0开头,i- 1和j - 1为结尾的两个序列的删除最小数
递推公式方面:
在这里插入图片描述
初始化方面:前面0行和0列的初值要赋好

func minDistance(word1 string, word2 string) int {
    dp := make([][]int, len(word1) + 1)
    for i := 0; i < len(dp); i++{
        dp[i] = make([]int, len(word2) + 1)
    }
    for i := 0; i <=  len(word1); i++{
        dp[i][0] = i
    }
    for i := 0; i <=  len(word2); i++{
        dp[0][i] =i
    }
    for i := 1; i <= len(word1); i++{
        for j := 1; j <= len(word2); j++{
            if word1[i - 1] == word2[ j - 1]{
                dp[i][j] = dp[i - 1][j - 1]
            }else{
                dp[i][j] = min(dp[i][j - 1], dp[i-1][j]) + 1
                dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + 2)
            }
        }
    }
    return dp[len(word1)][len(word2)]
}
func min(a, b int)int{
    if a < b{
        return a
    }
    return b
}

72. 编辑距离

其实是与上一个没什么显著的差别。
只是多了一个当不相同时需要判断三个方向,上一个理论上只需要判断两个方向即可,因为上一题的i-1,j-1到i,j需要两步,但是本题只需要一步

func minDistance(word1 string, word2 string) int {
    dp := make([][]int, len(word1) + 1)
    for i := 0; i < len(dp); i++{
        dp[i] = make([]int, len(word2) + 1)
    }
    for i := 0; i <=  len(word1); i++{
        dp[i][0] = i
    }
    for i := 0; i <=  len(word2); i++{
        dp[0][i] =i
    }
    for i := 1; i <= len(word1); i++{
        for j := 1; j <= len(word2); j++{
            if word1[i - 1] == word2[ j - 1]{
                dp[i][j] = dp[i - 1][j - 1]
            }else{
                dp[i][j] = min(dp[i][j - 1], dp[i-1][j]) + 1
                dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + 1)
            }
        }
    }
    return dp[len(word1)][len(word2)]
}
func min(a, b int)int{
    if a < b{
        return a
    }
    return b
}

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

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

相关文章

工具教程【甜心转译】-双语字幕、中文语音生成,打破信息差

甜心转译是一款AI加持的音/视频生成双语字幕、中文语音的软件。帮助人们更容易的获取外语信息、不管是学习、还是娱乐&#xff0c;快人一步。 主要功能 字幕生成&#xff1a;只需几个简单的步骤&#xff0c;轻松生成字幕。字幕翻译&#xff1a;只需一键&#xff0c;就可以将字…

JavaScript代码中字符串如何换行?

在工作中&#xff0c;代码提交之前可能会有一些语法检查的限制&#xff0c;限制我们的单行代码长度。 对于一些逻辑代码&#xff0c;有多种换行方式。这里主要记录一下对于字符串过长情况的处理方式。 对于字符串&#xff0c;除了使用 进行字符串拼接之外&#xff0c;也可以…

算法通关村第12关【青铜】| 字符串转换问题

1.转换成小写字母 思路&#xff1a;ASCll码中&#xff0c;a-z&#xff1a;97-122 A-Z&#xff1a;65-90 小写转大写-32&#xff0c;大写转小写32 class Solution {public String toLowerCase(String s) {int len s.length();StringBuilder str new StringBuilder();for(int…

windos设置环境变量--java环境变量

1.右键此电脑---属性 2.点高级系统设置 3.点环境变量 4.点新建--自定义变量名 5.找到安装路径&#xff0c;并且找到bin目录下的启动程序 验证&#xff1a;winR 输入cmd

Elasticsearch 全文搜索引擎 ---- IK分词器

原理&#xff1a;分词的原理&#xff1a;二叉树 首先讲一下为什么要出这个文章&#xff0c;前面我们讲过分词方法&#xff1a;中文分词搜索 pscws&#xff08;感兴趣的同学可以去爬楼看一下&#xff09;&#xff0c;那为什么要讲IK分词&#xff1f;最主要的原因是&…

uniapp 手机 真机测试 ​ 云打包 要是没申请 可以使用云打包 然后采用 测试权限即可​

uniapp 手机 真机测试 打开手机 找到手机的 版本号 点击 知道提示 &#xff08;启动开发者模式&#xff09; 然后 在进行usb的连接打开 运行uniapp 到手机基台 手机确认 即可 四&#xff0c; 云打包 要是没申请 可以使用云打包 然后采用 测试权限即可

SpringMVC <url-pattern/>解读

1. < url-pattern/>的值 (1).使用拓展名的方式&#xff0c;语法*.xxx&#xff0c;xxx是自定义的拓展名&#xff0c;常用的方式*.do&#xff0c;*.action,不能使用*.jsp. (2).使用斜杠 "/"当项目中使用了 / &#xff0c;他会替代tomcat中的default。导致所有的…

OpenCV(二十一):椒盐噪声和高斯噪声的产生

目录 1.图像噪声介绍 2.椒盐噪声的产生 3.高斯噪声的产生 1.图像噪声介绍 噪声介绍 图像噪声是指在图像中存在的不期望的、随机的像素值变化&#xff0c;这些变化来源于多种因素。噪声可能导致图像细节模糊、失真或难以分辨。 以下是几种常见的图像噪声类型&#xff1a; 1…

Go语言中的数组、切片和映射解析

目录 数组数组的声明数组循环 切片切片声明切片元素循环 映射Map的声明及初始化Map的遍历 数组 数组存放的是固定长度、相同类型的数据&#xff0c;而且这些存放的元素是连续的。 数组的声明 例如声明一个整形数组&#xff1a; array : [3]int{1, 2, 3}在类型名前加 [] 中括…

MySQL之MHA高可用配置及故障切换

目录 一、MHA概念 1、MHA的组成 2、MHA的特点 3、主从复制有多少种复制方法 二、搭建MySqlMHA部署 1&#xff0e;Master、Slave1、Slave2 节点上安装 mysql 2&#xff0e;修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf 3. 配置 mysql 一主两从 4、安…

【计算机网络】 ARP协议和DNS协议

文章目录 数据包在传输过程中的变化过程单播组播和广播ARP协议ARP代理免费ARP路由数据转发过程DNS协议 数据包在传输过程中的变化过程 在说ARP和DNS之前&#xff0c;我们需要知道数据包在传输过程的变化过程 从图片中可以看到&#xff0c;发送方的原数据最开始是在应用层&…

SystemVerilog 第5章 面向对象编程基础

5.1概述 对结构化编程语言,例如 Verilog和C语言来讲,它们的数据结构和使用这些数据结构的代码之间存在很大的沟壑。数据声明、数据类型与操作这些数据的算法经常放在不同的文件里,因此造成了对程序理解的困难。 Verilog程序员的境遇比C程序员更加棘手,因为Ⅴ erilog语言…

《服务端开发技术、方法与实用解决方案》——AIC松鼠活动第八期

AI 时代&#xff0c;程序员无需焦虑 ChatGPT 横空出世后&#xff0c;“AI 即将取代程序员” 的观点一度引发热议&#xff0c;至今尚未完全冷却。作为一名服务端开发工程师&#xff0c;同时也是 ChatGPT 的“忠实”用户&#xff0c;经过将近一年的使用&#xff0c;今天抽空写一篇…

智慧园区用水用电信息管理系统:实现高效节能的现代化园区管理

随着科技的不断发展&#xff0c;各类产业园区在我国经济社会发展中发挥着越来越重要的作用。为了提高园区的运营效率、降低能源消耗、实现绿色可持续发展&#xff0c;智慧园区用水用电信息管理系统应运而生。本文将从系统背景、功能特点、应用优势等方面进行详细介绍。 一、系统…

自然语言处理(八):预训练BERT

来自Transformers的双向编码器表示&#xff08;BERT&#xff09; BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种预训练的自然语言处理模型&#xff0c;由Google于2018年提出。它是基于Transformer模型架构的深度双向&#xff0…

【c++】stringstream基础:实现数据类型转换和字符串分割

传统实现整型转换为字符串需要使用itoa或者sprintf&#xff0c;对于itoa和atoi的使用可以看文章&#xff1a; atoi和itoa极简无废话概述 但是用这两个函数进行转换时&#xff0c;所需要的空间事先不确定&#xff0c;所以可能造成程序崩溃&#xff0c;今天介绍的stringstream可…

进程、线程、进程池、进程三态、同步、异步、并发、并行、串行

进程、线程、进程池、进程三态、同步、异步、并发、并行、串行 一.进程, 线程 1.&#x1f335;进程 &#x1f379;什么是进程? 开发写的代码我们称为程序&#xff0c;那么将开发的代码运行起来。我们称为进程。 明白点: 当我们运行一个程序&#xff0c;那么我们将运行的程…

反序列化漏洞及漏洞复现

文章目录 渗透测试漏洞原理不安全的反序列化1. 序列化与反序列化1.1 引例1.2 序列化实例1.2.1 定义一个类1.2.2 创建对象1.2.3 反序列化1.2.4 对象注入 2. 漏洞何在2.1 漏洞触发 3. 反序列化漏洞攻防3.1 PHP反序列化实例3.1.1 漏洞利用脚本3.1.2 漏洞利用3.1.3 获取GetShell 3.…

folium中RegularPolygonMarker的rotation怎么理解

背景 我们在使用 folium 库创建交互式地图的时候&#xff0c;如果我们使用 RegularPolygonMarker 对象&#xff0c;则会使用到 rotation这个参数&#xff0c;这个rotation的基准是什么&#xff1f;方向是顺时针还是逆时针&#xff1f;今天来聊聊。 创建几个 RegularPolygonMa…

策略路由典型配置:通过流策略实现策略路由(即重定向到不同的下一跳)

策略路由典型配置&#xff1a;通过流策略实现策略路由&#xff08;即重定向到不同的下一跳&#xff09; 1、拓扑图及组网要求 公司用户通过SW2核心交换机连接到外部网络&#xff0c;其中一条是高速链路&#xff0c;网关是192.168.100.2/24&#xff0c;另一条是低俗网络&#…