代码随想录算法训练营第36期DAY58

news2025/6/27 4:25:48

DAY58

今天的主题是:编辑距离。在字符串进行增删字符的操作。

392判断子序列,简单

首先想到快慢双指针:

通过了,很好:

  1. class Solution {
  2. public:
  3.     bool isSubsequence(string s, string t) {
  4.         int slow=0;
  5.         for(int fast=0;fast<t.size();fast++){
  6.             if(t[fast]==s[slow]) slow++;
  7.         }
  8.         if(slow==s.size()) return true;
  9.         return false;
  10.     }
  11. };

动态规划:没有想法尤其是遍历顺序及递推公式(不要用bool 就好想了 ),积累经验吧:

要看出来,这题和求最长公共子序列是一样的,递推公式有点区别,但也是继承

使用二维数组来记录字符比较结果。

Dp[i][j] 相同长度。

Code:

写了两个for循环,运行时间竟然是最优的,击败100%,奇怪了

  1. class Solution {
  2. public:
  3.     bool isSubsequence(string s, string t) {
  4.         vector<vector<int>> dp(s.size()+1,vector<int>(t.size()+1,0));
  5.         for(int i=1;i<=s.size();i++){
  6.             for(int j=1;j<=t.size();j++){
  7.                 if(s[i-1]==t[j-1]) dp[i][j]=dp[i-1][j-1]+1;
  8.                 else dp[i][j]=dp[i][j-1];
  9.             }
  10.         }
  11.         return dp[s.size()][t.size()]==s.size();
  12.     }
  13. };

115不同的子序列,困难

这题要做的要是编辑距离(仅删除似乎不够,还需要把删除的添加回来,但是这些操作都只在一个字符串上进行),积累经验:

显然如果是求连续子序列,就可以用KMP(记得复习KMP模板);

尝试着写递推公式,纸质笔记:

Code:

注意取模操作。

  1. class Solution {
  2. public:
  3.     long long pow(int n){
  4.         return 1e9;
  5.     }
  6.     int numDistinct(string s, string t) {
  7.         vector<vector<long long>> dp(s.size()+1,vector<long long>(t.size()+1));
  8.         for(int i=1;i<s.size()+1;i++) dp[i][0]=1;
  9.         for(int i=1;i<t.size()+1;i++) dp[0][i]=0;
  10.         dp[0][0]=1;
  11.         for(int i=1;i<=s.size();i++){
  12.             for(int j=1;j<=t.size();j++){
  13.                 if(s[i-1]==t[j-1]) dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%(int)(pow(9)+7);
  14.                 else dp[i][j]=(dp[i-1][j])%(int)(pow(9)+7);
  15.             }
  16.         }
  17.         return dp[s.size()][t.size()];
  18.     }
  19. };

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

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

相关文章

红酒保存中的氧气管理:适度接触与避免过度氧化

在保存云仓酒庄雷盛红酒的过程中&#xff0c;我们不得不面对一个微妙的问题&#xff1a;氧气管理。氧气&#xff0c;这个我们生活中无处不在的气体&#xff0c;对于红酒的保存却有着至关重要的影响。适度接触氧气对红酒的陈年过程和品质维护具有积极作用&#xff0c;然而过度氧…

修改eclipse ide的类及console的字体

查看了一下&#xff0c;这个类的字体看的很不爽&#xff0c;下面的是设置好的界面&#xff1a; Window -- Preferences--General--Appearance--Basic--Text Font Debug -- Console Font 经过以上的设置&#xff0c;就可以了。

java面试整合全套

什么是Java &#xff08;定义 优点&#xff09; java是一个平台&#xff0c;由jvm和Java应用编程接口构成的一门面向编程语言。 不仅吸收了C语言的各种优点&#xff0c;还摒弃了c语言里面的多继承,指针等概念&#xff0c;因此java的特征主要有功能强大和简单易用的特征。 jav…

【2.4GHz数据通信芯片解读】:Ci24R1与Si24R1有何不同?

开头我想先跟大家聊聊对2.4GHz无线射频芯片的看法&#xff0c;其中关于2.4GHz有源在整个物联网应用中是感知层无法或缺的一环&#xff0c;尤其是在一些无法通电的场所&#xff0c;可以为相对应的物联网方案赋能。 而在2.4GHz数据通信芯片里面&#xff0c;Ci24R1与Si24R1都具备收…

如何查找您的 SOLIDWORKS 序列号或许可证密钥

每个 SOLIDWORKS正版的软件都有自己的许可密钥&#xff0c;也称之为SOLIDWOKS的序列号。硕迪科技作为SOLIDKS正版软件代理商&#xff0c;我们的技术团队经常帮助客户查找他们的序列号。这篇文章将向您展示如何查找您的 SOLIDWORKS 序列号。 如果您拥有独立的 SOLIDWORKS 许可&…

使用QT制作QQ登录界面

mywidget.cpp #include "mywidget.h"Mywidget::Mywidget(QWidget *parent): QWidget(parent) {/********制作一个QQ登录界面*********************/this->resize(535,415);//设置登录窗口大小this->setFixedSize(535,415);//固定窗口大小this->setWindowTi…

【数据库设计】宠物商店管理系统

目录 &#x1f30a;1 问题的提出 &#x1f30a;2 需求分析 &#x1f30d;2.1 系统目的 &#x1f30d;2.2 用户需求 &#x1f33b;2.2.1 我国宠物行业作为新兴市场&#xff0c;潜力巨大 &#x1f33b;2.2.2 我国宠物产品消费规模逐年增大 &#x1f33b;2.2.3 我国宠物主选…

本地Zabbix开源监控系统安装内网穿透实现远程访问详细教程

文章目录 前言1. Linux 局域网访问Zabbix2. Linux 安装cpolar3. 配置Zabbix公网访问地址4. 公网远程访问Zabbix5. 固定Zabbix公网地址 &#x1f4a1;推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【…

用正弦函数实现跳跃弧线

1&#xff0c;想法来源 在游戏中&#xff0c;需要实现一个跳跃的功能&#xff0c;我最开始用的是重力加速度。即水平速度不变&#xff0c;垂直速度加等于重力&#xff0c;但策划觉得不好调。 最后决定使用固定的曲线函数实现&#xff0c;即X轴速度不变&#xff0c;Y轴按照距离…

14.shell awk数组

awk数组 awk数组awk数组示例Nginx日志分析 awk数组 1.什么是awk数组 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值 2.awk数组应用场景 通常用来统计、比如:统计网站访问TOP10、网站url访问TOP10等等 3.awk数组统计技巧 1.在awk中,使用数组时,不仅可以…

EE trade:黄金期货交易指令有哪些

在黄金期货交易中&#xff0c;投资者常用的交易指令主要包括以下几种&#xff0c;每种指令都有其特殊用途和优势&#xff1a; 市价单(Market Order) 直接按市场当前价格买入或卖出合约。 适用于追求立即成交&#xff0c;不关注价格变动的情况。 限价单(Limit Order) 设定一…

DiskMirror 简化文件IO的开发 的有效手段!

DiskMirror 用于进行磁盘文件管理的一面镜子&#xff0c;其包含许多的适配器&#xff0c;能够将任何类型的文件数据流中的数据接入到管理中&#xff0c;并将保存之后的 url 返回&#xff0c;支持不同文件所属空间的管控&#xff0c;您还可以通过此API 获取到指定 userid 下面的…

AI写真教程:Stable Diffusion 之 IPAdapter-FaceId

自Stable Diffusion发布以来&#xff0c;AI写真一直是AIGC界的热门话题。 AI写真为摄影师和艺术家提供了全新的创作工具。通过AI技术&#xff0c;艺术家可以轻松实现复杂的图像效果&#xff0c;如风格迁移、图像合成等&#xff0c;AI写真能够在短时间内完成传统摄影师和设计师…

express+vue在线im实现【一】

在线体验地址 需要用邮箱注册一个账号 在线链接 目前实现的功能 1、在线聊天(群聊) 2、实时监控成员状态 3、历史聊天&#xff0c;下拉加载 4、有新消息&#xff0c;自动滚动到最新消息&#xff0c;如果自己在查看历史记录&#xff0c;不会强行滚动 后续计划新增功能 感兴…

ERP管理系统解决方案(附ERP流程和详细解决方法)

ERP 是专门为制造企业设计的综合性管理解决方案&#xff0c;旨在优化制造业务流程&#xff0c;整合各个部门和环节&#xff0c;实现生产、供应链、质量控制和销售等方面的高效协同。 传统的制造行业会面临哪些业务痛点&#xff0c;会考虑erp解决方案&#xff1a; 生产成本高昂…

vue聊天发送Emoji表情

在用web端写聊天发送表情的功能中&#xff0c;使用web端有系统自带的unicode表情会出现每端不统一的情况&#xff0c;不好用不能统一&#xff0c;在这里我想到了一个非常好的思路&#xff0c;可以解决这个问题&#xff01; 那就是发送表情用图片的形式呈现&#xff0c;然后发给…

springboot+vue3前后端项目-部署Docker详解

一、后端yml环境配置 mysql和redis的连接之前是localhost。现在我们需要修改成容器之间的调用&#xff0c;如何知道mysql和redis的连接地址呢&#xff1f;docker compose就帮我们解决了这个问题&#xff0c;我们可以使用镜像容器的服务名称来表示链接。比如docker-compose.yml…

【精品方案】离散型制造行业智能工厂标准解决方案(49页 PPT)

引言&#xff1a;随着科技的不断进步和制造业的转型升级&#xff0c;离散型制造行业正面临着从传统制造向智能制造转型的迫切需求。离散型制造行业涉及的产品种类繁多&#xff0c;生产流程复杂&#xff0c;对生产效率、产品质量和成本控制有着极高的要求。因此&#xff0c;开发…

【linux网络(三)】HTTP协议详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. 序列化和…

【机器学习】机器学习赋能医疗健康:从诊断到治疗的智能化革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f4d2;1. 引言&#x1f4d9;2. 机器学习在疾病诊断中的应用&#x1f9e9;医学影像分析&#xff1a;从X光到3D成像带代码&#x1…