代码随想录第45天 | ● 392.判断子序列 ● 115.不同的子序列

news2024/11/19 17:26:35

392.判断子序列

    
    let n=s.length
    let a=0
    if(n===0)
     return true 
    for(let i=0;i<t.length;i++){
        if(s[a]===t[i])
            a++
        if(a===n)
        return true
    }
    return false


// s、t的长度
    const [m, n] = [s.length, t.length];
    // dp全初始化为0
    const dp = new Array(m + 1).fill(0).map(x => new Array(n + 1).fill(0));
    for (let i = 1; i <= m; i++) {
        for (let j = 1; j <= n; j++) {
            // 更新dp[i][j],两种情况
            if (s[i - 1] === t[j - 1]) {
                dp[i][j] = dp[i - 1][j - 1] + 1;
            } else {
                dp[i][j] = dp[i][j - 1];
            }
        }
    }
    // 遍历结束,判断dp右下角的数是否等于s的长度
    return dp[m][n] === m ? true : false;

第一想法

  • dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。
  • if (s[i - 1] == t[j - 1])
    t中找到了一个字符在s中也出现了
    if (s[i - 1] != t[j - 1])
    相当于t要删除元素,继续匹配
    在这里插入图片描述

115.不同的子序列

const numDistinct = (s, t) => {
  let dp = Array.from(Array(s.length + 1), () => Array(t.length +1).fill(0));
    for(let i = 0; i <=s.length; i++) {
        dp[i][0] = 1;
    }
    
    for(let i = 1; i <= s.length; i++) {
        for(let j = 1; j<= t.length; j++) {
            if(s[i-1] === t[j-1]) {
                dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
            } else {
                dp[i][j] = dp[i-1][j]
            }
        }
    }
    return dp[s.length][t.length];

};


思想

/**
对于不连续的子串匹配,s为主串,t为匹配串,s=abcd,t=ad时,就算s的b和t的d不匹配也没关系,把s的b、c都删了,那就匹配了!
并且每一个结果都是会叠加直到结束的!如s=aaba,t=a,dp[0][0]=1,dp[1][0]=1+dp[0][0]2,dp[2][0]=dp[1][0]=2,dp[3][0]=1+dp[2][0]=3

    dp:dp的构造类似718. 最长连续重复子数组【但是这里】
    1.定义dp:dp[i][j]:以s[i]为结尾、t[j]为结尾的两个子串满足要求的个数,即t子串存在s子串中的个数
    2.递推公式:
    对于每一次s[i]与t[j]进行匹配,由于本题是不连续的匹配子序列,如例子:s="abcd",t="abd",当nums1[2]!=nums2[2]时,这个时候若是求解连续相同子序列的话,那么dp就要置0了!
    但是这儿求解的是不连续的,所以即便当前元素不匹配也没关系,跳过当前元素s[i],保留上一个元素s[i-1]与t[j]的匹配结果即dp[i-1][t],然后后面继续匹配就行了!
    if(s[i]==t[j])
        dp[i][j]=dp[i-1][j-1] + dp[i-1][j],这个后面的dp[i-1][j]表示删除当前s[i]元素,保留上一个元素s[i-1]与t[j]的匹配结果即dp[i-1][t];如:s=bagg,t=bag,当i=3,j=2时,dp[3][2]=dp[2][1]即0 + dp[3-1][2]即1 = 1 !!! 
        <<<--------即模拟了保留s[i]和删除s[i]的两次过程,保留s[i]则+dp[i-1][j-1],删除s[i]则+dp[i-1][i]
    else 
        dp[i][j]=dp[i-1][j],若当前s[i]与t[j]不匹配,那么就删除s[i],保留上一轮的结果即可,如例子:s=abcd,t=ad,dp[0][0]=1,有dp[1][0]=dp[0][0]=1,则dp[2][0]=dp[1][0]=1,dp[3][1]=dp[2][0]=1!
    递推方向:i、j两层循环,从左到右从上到下
    3.初始化:当i=0、t=任意时,s[0]不可能包含t[j]即dp[0][j]=0,当i任意、j=0时,只要s[i]=t[0],就有机会s包含t,即dp[i][0]=s[i]==t[0]
*/

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

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

相关文章

SpringBoot SSMP项目搭建保姆级教程

一、SpringBoot项目创建 Idea中创建New Project&#xff0c;选择Spring Initializr&#xff0c;输入Name、Location、JDK等&#xff0c;下一步。 选择合适的 SpringBoot 版本&#xff0c;点击创建。 此时&#xff0c;SpringBoot基础项目已经创建完毕。 二、Entity 开发 引入…

【AIFEM案例教程】压力容器热固耦合分析

AIFEM是由天洑自主研发的一款通用的智能结构仿真软件&#xff0c;助力用户解决固体结构相关的静力学、动力学、振动、热力学等实际工程问题&#xff0c;软件提供高效的前后处理工具和高精度的有限元求解器&#xff0c;帮助用户快速、深入地评估结构的力学性能&#xff0c;加速产…

天锐绿盾公司终端文件数据、资料防泄密系统——自动智能透明加密保护核心数据防止外泄软件

天锐绿盾公司终端文件数据防泄密系统采用高强度加密算法&#xff0c;对各种类型的文件进行实时、强制、透明的加解密。 该系统具有以下特点&#xff1a; 稳定性高&#xff1a;天锐绿盾文档透明加密安全系统是酷卫士电子文档安全管理平台的一个重要功能模块&#xff0c;性能稳定…

如何快速批量修改多个视频的MD5值?

在日常工作和生活中&#xff0c;我们经常需要处理大量的视频文件。有时候&#xff0c;我们需要修改这些视频文件的MD5值来满足某些需求。手动修改每个视频的MD5值是一项繁琐且容易出错的任务。幸运的是&#xff0c;有一种方法可以快速批量修改多个视频的MD5值&#xff0c;以下是…

[MySQL]BLOB/TEXT column ‘xxx‘ used in key specification without a key length

报错信息&#xff1a; SQLSTATE[42000]: Syntax error or access violation: 1170 BLOB/TEXT column xxx used in key specification without a key length 原因&#xff1a; MySQL的唯一索引不支持text类型的字段&#xff01;

Vue3开始

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;海贼王&#xff09; 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年…

网站防护的多种方案,如何让网站坚不可破

越权问题 问题叙述&#xff1a;存在权限管理不当的问题&#xff0c;导致用户可以越权访问资源。 改动提议&#xff1a;强化用户权限认证机制。 留意&#xff1a;通常&#xff0c;这种问题涉及到不同权限用户之间的资源访问&#xff0c;如浏览历史、cookie&#xff0c;以及标识…

软考公告 | 2023下半年软考模拟练习平台上线

软考办官方2023年下半年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试模拟练习平台已开通&#xff0c;各位考生可于2023年10月16日-11月3日登录免费模拟练习。 模拟地址&#xff1a; https://bm.ruankao.org.cn/sign/welcome 01 软考模拟系统 大家可以登录…

FPGA纯verilog实现RIFFA的PCIE通信,提供工程源码和软件驱动

目录 1、前言免责声明 2、我已有的PCIE方案3、RIFFA简介RIFFA概述RIFFA架构RIFFA驱动RIFFA方案的局限性 4、RIFFA 源码详解用户接口 5、vivado工程详解6、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 7、上板调试验证并演示8、福利&#xff1a;工程代码的…

滴滴弹性云基于 K8S 的调度实践

上篇文章详细介绍了弹性云混部的落地历程&#xff0c;弹性云是滴滴内部提供给网约车等核心服务的容器平台&#xff0c;其基于 k8s 实现了对海量 node 的管理和 pod 的调度。本文重点介绍弹性云的调度能力&#xff0c;分为以下部分&#xff1a; 调度链路图&#xff1a;介绍当前弹…

【数据结构】Java对象的比较

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVA数据结构》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力…

Swift 周报 第三十九期

文章目录 前言新闻和社区卖不动了 iPhone 在美国市场销量或陷入停滞与 Apple 专家会面交流 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第三十九期&#xff0c;每个模块已初步成型。各位读者如果有好的提议&#xff0c;欢迎在文末留…

C#根据ip获取地理位置信息的方法,史上最全

商业收费 百度地图高德地图腾讯地图纯真IP 开源免费 纯真ip免费版 以前可以直接下载&#xff0c;现在获取ip数据库的方式改变了&#xff0c;自行官网查看把&#xff0c;个人或者学术研究&#xff0c;商用追责&#xff0c;商业用途慎用 using System.Collections.Generic; us…

亚马逊,shopee,lazada流量攻略:测评补单是提升排名不可或缺的利器

亚马逊卖家为什么一定要测评补单&#xff0c;今年不测评补单的卖家会很惨&#xff0c;不要抬杠&#xff0c;听完林哥给你分析&#xff0c;如果你感觉不对在抬杠不迟 1.亚马逊的广告成本越来越贵而且单纯靠砸广告做排名&#xff0c;你是不是发现广告一停排名就往下掉&#xff0…

求臻医学:实体肿瘤FDA/NMPA新获批抗癌药物/适应症盘点

肿瘤分子靶向治疗发展迅速&#xff0c;随着研究的深入开展&#xff0c;多款靶向药物及免疫药物获批。求臻医学根据美国食品药品监督管理局&#xff08;FDA&#xff09;公布信息、中国国家药品监督管理局&#xff08;NMPA&#xff09;发布的药品批准证明文件&#xff0c;以及各公…

[esp32]Micorpython进行PWM

通过wokwi进行模拟PWM from machine import PWM,ADC,Pin import time led_blue1PWM(Pin(2),freq1000)#把GPIO2定义为PWM输出&#xff0c;脉冲频率为1秒1000个 led_blue1.duty(1023) btn1Pin(35) liangdu0 while(1):if(btn1.value()0):#有按钮按下time.sleep(1) #延时1秒liang…

视频标注的两个主要方法

视频标注技术 单一图像法 在自动化工具面世之前&#xff0c;视频标注效率不高。各公司使用单一图像法提取视频中的所有帧&#xff0c;然后使用标准图像标注技术将它们作为图像来标注。在30fps的视频中&#xff0c;每分钟有1800帧。这个过程没有利用视频标注的优势&#xff0c;…

性能测试 —— 通过Jmeter压测存储过程!

一、存储过程准备&#xff1a; 1、建立一个空表&#xff1a; 1 CREATE TABLE test_data ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2、建立一个存储过程&#xff1a; 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE PROCEDURE insert_test_data (n IN NUMBER) AS BEGIN --E…

苏州市发改委领导一行莅临蓝海彤翔集团调研考察

10月11日&#xff0c;苏州市发改委领导一行莅临蓝海彤翔集团考察调研未来产业发展与“四链融合“情况&#xff0c;集团副总裁张蓓丽接待了调研组一行。 张蓓丽首先对苏州发改委领导一行的到来表示热烈欢迎&#xff0c;并在集团一楼展厅就蓝海彤翔发展历程、产品研发、行业应用及…

vmware ESXi简易使用说明

单位弄了一台联想的啥服务器。具体啥配置我不太清楚&#xff0c;但是看上去高大上&#xff0c;实际上是远程做虚拟机操作的&#xff0c;具体咋回事我也不太清楚&#xff0c;但是简单用用总要会的吧&#xff0c;于是学习了一下&#xff0c;写个笔记。 首先用ip访问这台主机 用户…