leetcode刷题 log day56(编辑距离总结篇~

news2024/9/23 7:30:13
  • 583. 两个字符串的删除操作
    思路】这道题只有删除操作,两个字符串相等时,步数不变,不相等时,只能做删除操作,删除有三种情况:删除 word1 或删除 word2 或者两个字符串都删除,取三种情况的最小值。

    var minDistance = function(word1, word2) {
      let dp = new Array(word1.length + 1).fill().map(() => Array(word2.length + 1).fill(0));
    
      // 初始化
      for (let i = 1; i <= word1.length; i++) {
        dp[i][0] = i;
      }
      for (let j = 1; j <= word2.length; j++) {
        dp[0][j] = j;
      }
    
      for (let i = 1; i <= word1.length; i++) {
        for (let j = 1; j <= word2.length; j++) {
          if (word1[i - 1] === word2[j - 1]) dp[i][j] = dp[i - 1][j - 1]
          else dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j -1] + 2);
        }
      }
      return dp[word1.length][word2.length];
    };
    
  • 72. 编辑距离
    思路】只能说只要图画的够丑就不用加水印
    请添加图片描述

    var minDistance = function(word1, word2) {
      let dp = new Array(word1.length + 1).fill().map(() => Array(word2.length + 1).fill(0));
    
      // 初始化
      for (let i = 1; i <= word1.length; i++) dp[i][0] = i;
      for (let j = 1; j <= word2.length; j++) dp[0][j] = j;
    
      for (let i = 1; i <= word1.length; i++) {
        for (let j = 1; j <= word2.length; j++) {
          if (word1[i - 1] === word2[j - 1]) dp[i][j] = dp[i - 1][j - 1]
          else dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1);
        }
      }
      
      return dp[word1.length][word2.length];
    };
    

编辑距离总结~

  • 判断子序列:s 是否是 t 的子序列,dp[i][j] 两个字符串目前相等的个数:

    • 相等: dp[i][j] = dp[i - 1][j - 1] + 1
    • 不相等:dp[i][j] = dp[i - 1][j]
  • 不同的子序列:计算 t 在 s 的子序列中出现的次数:

    • 相等:用 s[i - 1] 匹配 + 不用 s[i - 1] 匹配 dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
    • 不相等:dp[i][j] = dp[i -1][j]
  • 两个字符串中的删除操作:

    • 相等:不做操作dp[i][j] = dp[i - 1][j - 1]
    • 不相等:可以删除 word1 中的元素、删除 word2 中的元素或两个字符串都删除元素,三者取最小值 dp[i][j] = Math.min(dp[i - 1][j - 1] + 2, dp[i - 1][j] + 1, dp[i][j - 1] + 1)
  • 编辑距离见上~

参考代码随想录:https://www.programmercarl.com/

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

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

相关文章

sytem clock for ctrl ms task and us/ms delay

Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 位递减计数器&#xff0c;SysTick 设定初值并使能后&#xff0c;每经过 1 个系统时钟周期&#xff0c;计数值就减 1。计数到 0 时&#xff0c;SysTick 计数器自动重装初值并继续计数&#xff0c;同时内部的 COUNTF…

网页性能优化

网页性能优化 文章目录网页性能优化[TOC](文章目录)前言1.前端脚本优化1.1 减少重绘、回流1.2 缓存dom选择与计算1.3 使用事件委托而不是批量绑定2.渲染优化2.1 使用CSS3开启GPU硬件加速提升网站动画渲染性能2.2 touchmove、scroll、input事件添加防抖3.加载优化3.1 合并小图片…

怎么修改图片分辨率提高清晰度?如何调整图片dpi分辨率?

下载的图片有时候会比较模糊&#xff0c;想要改变图片清晰度的话就需要调整图片分辨率&#xff0c;很多小伙伴都不知道怎么去修改分辨率&#xff08;在线修改照片分辨率&#xff08;DPI&#xff09; 调整图片DPI 照片dpi修改工具-压缩图&#xff09;。今天小编就教大家一个非常…

关系抽取(三)实体关系联合抽取:TPlinker

参考&#xff1a; NLP系列之封闭域联合抽取&#xff1a;CasRel、TPLinker、PRGC、PURE、OneRel&#xff0c;实在是太卷了&#xff01; - 知乎 (zhihu.com)NLP 关系抽取 — 概念、入门、论文、总结 TPlinker 论文&#xff1a;PLinker: Single-stage Joint Extraction of Entit…

乐观锁思想在 JAVA 中的实现——CAS

前言 生活中我们看待一个事物总有不同的态度&#xff0c;比如半瓶水&#xff0c;悲观的人会觉得只有半瓶水了&#xff0c;而乐观的人则会认为还有半瓶水呢。很多技术思想往往源于生活&#xff0c;因此在多个线程并发访问数据的时候&#xff0c;有了悲观锁和乐观锁。 悲观锁认为…

FinClip11月产品更新:FIDE 插件开发功能优化;开发者文档英文版上线

不知不觉 22 年进入尾声&#xff0c;通过一年的不断打磨&#xff0c;FinClip 也在不断成长&#xff0c;现在&#xff0c;让我们看看过去的 11 月&#xff0c;FinClip 又有了哪些新的变化。 产品方面的相关动向&#x1f447;&#x1f447;&#x1f447; FIDE 插件开发功能优化…

【LeetCode每日一题:1775. 通过最少操作次数使数组的和相等~~~贪心+思维题】

题目描述 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间&#xff08;包含 1 和 6&#xff09;。 每次操作中&#xff0c;你可以选择 任意 数组中的任意一个整数&#xff0c;将它变成 1 到 6 之间 任意 的值&#xff08;包含 1 和 6&a…

另一种在ARM/x86架构处理器上部署WebDAV服务器的方法

引言 最近搞了个矿渣&#xff0c;处理器是国产的RK3328&#xff0c;四核A53架构&#xff0c;64位的&#xff0c;性能太好了&#xff0c;装了个OpenWRT&#xff0c;想用来当nas用&#xff0c;但是我发现&#xff0c;竟然没有合适的文件服务器&#xff0c;局域网内用SMB确实可以…

Java并发编程—CompletableFuture的常用方法(建议收藏)

在过去的一段时间里&#xff0c;博主一直在给大家分享多线程并发编程里面的关键CompletableFfuture类的各种技术点&#xff0c;并发编程作为java开发里面关键点之一&#xff0c;也是大家向上提升重要的一点&#xff1b;对于CompletableFuture的学习一定要学到位&#xff0c;前面…

盘点 JDK 中基于 CAS 实现的原子类

前言 JDK 中提供了一系列的基于 CAS 实现的原子类&#xff0c;CAS 的全称是Compare-And-Swap&#xff0c;底层是lock cmpxchg指令&#xff0c;可以在单核和多核 CPU 下都能够保证比较交换的原子性。所以说&#xff0c;这些原子类都是线程安全的&#xff0c;而且是无锁并发&…

第4季5:图像sensor的驱动源码的编译

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 本文演示如何修改sensor的驱动源码&#xff0c;修改之后如何编译与运行。 一、sensor的注册接口分析 这部分内容见第4季4&#xff1a;图像sensor的驱动源码解析。 二、黑电平 关于黑电平的概念&a…

[附源码]计算机毕业设计抗疫医疗用品销售平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【电巢】电源管理芯片:国产化替代厂家竞逐千亿黄金赛道

前言 整个2022年三季度&#xff0c;全国新能源电动车的起火已高达600多起&#xff0c;同比上升了30%多&#xff0c;如果具体到每天来看&#xff0c;平均每天都有超过7起新能源电动车火灾发生。 7月22日&#xff0c;台湾省专业赛车手林某颖驾驶着一辆白色特斯拉Model X&#xff…

es与mysql之间的数据同步

常见的数据同步方案有三种&#xff1a; 同步调用 异步通知 监听binlog 方案一&#xff1a;同步调用&#xff08;基本不会用&#xff0c;问题太多&#xff09; 基本步骤如下&#xff1a; hotel-demo对外提供接口&#xff0c;用来修改elasticsearch中的数据 酒店管理服务在完成…

活动预告 | DataFunSummit 2022-MLOps 及 AI 工程化落地论坛

11月19日 13&#xff1a;30-17:30&#xff0c;OpenMLDB 项目发起人、第四范式技术副总裁 郑曌作为出品人发起 DataFunSummit 2022 MLOps 及 AI 工程化落地论坛。OpenMLDB PMC、第四范式资深系统架构科师 卢冕&#xff0c;将在论坛中为大家带来议题为《开源机器学习数据库 OpenM…

吃透阿里P8推荐424页Java服务端研发知识图谱后,直接入职蚂蚁P6

前言 蓦然回首自己做开发已经十年了&#xff0c;这十年中我获得了很多&#xff0c;技术能力、培训、出国、大公司的经历&#xff0c;还有很多很好的朋友。但再仔细一想&#xff0c;这十年中我至少浪费了五年时间&#xff0c;这五年可以足够让自己成长为一个优秀的程序员&#…

看场景、重实操,实时数仓不是“纸上谈兵”

本文转载自阿里云Hologres产品负责人合一在ITPUB的访谈&#xff0c;谈谈他眼中的实时数仓&#xff0c; 原文链接&#xff1a; https://mp.weixin.qq.com/s/RZMWf9r4fKV9mNoGGUtaVw 这两年&#xff0c;企业IT领域掀起实时数仓热潮。然而&#xff0c;只要稍做梳理就会发现&#…

【笔试强训】Day 6

&#x1f308;欢迎来到笔试强训专栏 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句鸡汤&#x…

Redis - Redis为什么这么快?

1. Redis为什么这么快&#xff1f; 数据结构简单&#xff0c;对数据操作也简单&#xff0c;Redis 中的数据结构是专门进行设计的&#xff1b;基于内存实现&#xff0c;读写速度快&#xff1b;Redis 是单线程的&#xff0c;避免了不必要的上下文切换和竞争条件&#xff0c;也不…

卖座网站影院界面:优化长列表的滑动流畅度方案

关键点1&#xff1a;优化长列表的滑动流畅度 问题&#xff1a;在长列表中&#xff0c;向下滑动时&#xff0c;为了提高用户的使用感受&#xff0c;这个滑动一般都会做的很流畅。但是在网速不快的情况下&#xff0c;它自然会卡顿&#xff0c;所以为了优化网速慢带来的卡顿现象&…