当前位置: 首页 > news >正文

day55【动态规划子序列】392.判断子序列 115.不同的子序列

文章目录

  • 392.判断子序列
  • 115.不同的子序列

392.判断子序列

  • 题目链接:力扣链接

  • 讲解链接:代码随想录讲解链接

  • 题意:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

    字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

    进阶:
    如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

      示例 1:输入:s = "abc", t = "ahbgdc"输出:true示例 2:输入:s = "axc", t = "ahbgdc"输出:false
    
  • 思路看代码注释

class Solution {public boolean isSubsequence(String s, String t) {char[] chars = s.toCharArray();char[] chart = t.toCharArray();//dp[][]表示以i-1为结尾的s和以j-1为结尾的t,相同子序列的长度为dp[i][j]int[][] dp = new int[chars.length+1][chart.length+1];//初始化:dp表示以i-1和j-1为结尾,那么dp[0][j]和dp[i][0]是无意义的,初始化为0即可。其他是由前面推导的,也赋值为0就行。for(int i = 1; i <= chars.length; i++) {for(int j = 1; j <= chart.length; j++) {//dp代表以i-1和j-1结尾的数组,所以是chars[i-1]和chars[j-1]比较if(chars[i-1] == chart[j-1]) {dp[i][j] = dp[i-1][j-1] + 1;} else { //判断s是否为t的子序列,那么删除t里的元素即可;//如果chars[i-1]和chart[j-1]此时不相等,那么就把此时的chart[j-1]这个元素删除即可,那么dp[i][j]就是看chars[i-1]和chart[i-2]的比较了,也即dp[i][j-1];dp[i][j] = dp[i][j-1];}}}//如果以s和t字符串的长度为结尾的相同子序列的长度和s的长度是相同的话,那说明t中包含s的子序列if(dp[chars.length][chart.length] == chars.length) {return true;} else {return false;}}
}

115.不同的子序列

  • 题目链接:力扣链接

  • 讲解链接:代码随想录讲解

  • 题意:给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 10e9 + 7 取模。

      示例 1:输入:s = "rabbbit", t = "rabbit"输出:3解释:如下所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。rabbbitrabbbitrabbbit示例 2:输入:s = "babgbag", t = "bag"输出:5解释:如下所示, 有 5 种可以从 s 中得到 "bag" 的方案。 babgbagbabgbagbabgbagbabgbagbabgbag
    
  • 思路 :看代码(自己还有点迷糊)

class Solution {public int numDistinct(String s, String t) {char[] charS = s.toCharArray();char[] charT = t.toCharArray();//代表以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]int[][] dp = new int[charS.length+1][charT.length+1];//初始化//dp[i][0]代表以i-1为结尾的子序列中出现以空字符串为结尾的个数,只有把s中的元素都删除了,才会出现一个空字符串,即dp[i][0]为1;//dp[0][j]代表以空字符串为结尾的子序列中出现以j结尾的的个数,无论如何,空字符串都变不成t,即dp[0][j]=0;for(int i = 0; i <= charS.length; i++) {dp[i][0] = 1;}for(int i = 1; i <= charS.length; i++) {for(int j = 1; j <= charT.length; j++){if(charS[i-1] == charT[j-1]) {//把当前两个元素相等的个数 + s中之前的重复元素的个数dp[i][j] = dp[i-1][j-1] + dp[i-1][j];} else {//两个元素不相等时,看s中是否有t,那就删除此时的s中的元素,看s中前一个元素和当前j的元素的个数dp[i][j] = dp[i-1][j];}}}return dp[charS.length][charT.length]; }
}

相关文章:

day55【动态规划子序列】392.判断子序列 115.不同的子序列

文章目录 392.判断子序列115.不同的子序列 392.判断子序列 题目链接&#xff1a;力扣链接 讲解链接&#xff1a;代码随想录讲解链接 题意&#xff1a;给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不…...

c语言中磁盘文件的分类

#include <stdio.h> /*磁盘文件的分类&#xff1a; * 一个文件通常是磁盘上一段命名的存储区计算机的存储在物理上是二进制的&#xff0c; * 所以物理上所有的磁盘文件本质上都是一样的&#xff1a;以字节为单位进行顺序存储 * 从用户或者操作系统使用的角度&#xff08…...

Unity适配微信

使用的是微信开发的插件 GitHub - wechat-miniprogram/minigame-unity-webgl-transform 路径相关&#xff1a; Unity&#xff1a;Application.streamingAssetsPath --> 配置的cdn路径StreamingAssets...

虚拟机本地磁盘在线扩容

背景 虚拟机本地盘对于host物理机来说就是一个LVM卷,虚拟化(libvirt+kvm_qemu)已经支持虚拟机磁盘在线调整,配合物理机lvm管理工具可实现云场景下虚拟机磁盘在线扩容功能。环境检查 (1)虚拟机本地盘信息 <disk type=block device=disk><driver...

ACTIVE_MQ学习

ActiveMq学习①___入门概述https://blog.csdn.net/qq_45905724/article/details/131796502 ActiveMq学习②__安装与控制台https://blog.csdn.net/qq_45905724/article/details/133893214 ActiveMq学习③___Java编码实现ActiveMQ通讯https://blog.csdn.net/qq_45905724/articl…...

【C++初阶】类和对象(上)

【C初阶】类和对象&#xff08;上&#xff09; 1.面向对象与面向过程的初步认识2.类的引入3. 类的定义4.类的访问限定符及封装4.1访问限定符4.2封装 5.类的作用域6.类的实例化6.类的对象的大小计算7.类的this指针7.1this指针的引入7.2this指针的一些特性 &#x1f4c3;博客主页…...

新版onenet平台安全鉴权的确定与使用

根据onenet官方更新的文档&#xff1a;平台提供开放的API接口&#xff0c;用户可以通过HTTP/HTTPS调用&#xff0c;进行设备管理&#xff0c;数据查询&#xff0c;设备命令交互等操作&#xff0c;在API的基础上&#xff0c;根据自己的个性化需求搭建上层应用。 为提高API访问安…...

容器核心技术-Namespace

一、容器 基于Linux 内核的 Cgroup&#xff0c; Namespace&#xff0c;以及Union FS等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术&#xff0c;由于隔离的进程独立于宿主和其它的隔离的进程&#xff0c;因此也称其为容器。 1.1 容器主要特性…...

linux写文件如何保证落盘?

3.1.1. sync sync函数只是将所有修改过的块缓冲区排入写队列&#xff0c;然后就返回&#xff0c;它并不等待实际写磁盘操作结束。通常称为 update的系统守护进程会周期性地&#xff08;一般每隔30秒&#xff09;调用sync函数。这就保证了定期冲洗内核的块缓冲区。命令 sync也…...

2023 electron最新最简版打包、自动升级详解

这里我将讲解一下从0搭建一个electron最简版架子&#xff0c;以及如何实现打包自动化更新 之前我有写过两篇文章关于electron框架概述以及 常用api的使用&#xff0c;感兴趣的同学可以看看 Electron桌面应用开发 Electron桌面应用开发2 搭建electron 官方文档&#xff1a;ht…...

ConcurrentHashMap是如何实现线程安全的

目录 原理&#xff1a; 初始化数据结构时的线程安全 put 操作时的线程安全 原理&#xff1a; 多段锁cassynchronize 初始化数据结构时的线程安全 在 JDK 1.8 中&#xff0c;初始化 ConcurrentHashMap 的时候这个 Node[] 数组是还未初始化的&#xff0c;会等到第一次 put() 方…...

MYSQL:索引与锁表范围简述

一、聚簇索引原则 当有主键索引时&#xff0c;选择主键索引&#xff1b;如果没有主键索引&#xff0c;选择第一个的unique索引&#xff1b;如果都没有就选择隐藏生成的ROW_ID。 二、加锁原则 来自知乎MySQL探秘(七):InnoDB行锁算法 - 知乎 (zhihu.com) 在不通过索引条件查询时…...

15 款 PDF 编辑器帮助轻松编辑、合并PDF文档

PDF 编辑器在当今的数字环境中至关重要&#xff0c;因为 PDF 已成为共享和存储信息的首选格式。只需几分钟&#xff0c;可靠的 PDF 编辑器即可让用户能够根据其特定需求修改、定制和定制文档。在本文中&#xff0c;我们全面汇编了 15 款最佳免费 PDF 编辑器&#xff0c;让您可以…...

PS Raw中文增效工具Camera Raw 16

Camera Raw 16 for mac&#xff08;PS Raw增效工具&#xff09;的功能特色包括强大的图像调整工具。例如&#xff0c;它提供白平衡、曝光、对比度、饱和度等调整选项&#xff0c;帮助用户优化图像的色彩和细节。此外&#xff0c;Camera Raw 16的界面简洁易用&#xff0c;用户可…...

Flink源码解析二之执行计划⽣成

JobManager Leader 选举 首先flink会依据配置获取RecoveryMode,RecoveryMode一共两两种:STANDALONE和ZOOKEEPER。 如果用户配置的是STANDALONE,会直接去配置中获取JobManager的地址如果用户配置的是ZOOKEEPER,flink会首先尝试连接zookeeper,利用zookeeper的leadder选举服务发现…...

MySQL遍历所有表所有字段查找字符数据

MySQL遍历所有表所有字段查找字符数据 工作中有一些数据查找&#xff0c;但是在那个库那个表那个字段中并不明确&#xff0c;特别是敏感字符查找&#xff0c;如果数据量并不大&#xff0c;我们可以采用遍历整个库、表中字符来查找相关数据来解决该问题。 我们可以写一个存储过…...

Java中的异常处理机制是怎样的?

Java中的异常处理机制主要包括以下几个部分&#xff1a; 异常类&#xff08;Exception Class&#xff09;&#xff1a;Java中的异常类继承自java.lang.Throwable&#xff0c;主要分为两大类&#xff1a;Error和Exception。Error表示程序无法处理的严重问题&#xff0c;如系统崩…...

高教社杯数模竞赛特辑论文篇-2023年A题:定日镜场的优化设计(附获奖论文及MATLAB代码实现)

目录 摘 要 一、 问题重述 1.1 问题背景 1.2 问题重述 二、 模型假设 三、 符号说明...

c语言实现http下载功能,显示进度条和下载速率

#include <stdio.h>//printf #include <string.h>//字符串处理 #include <sys/socket.h>//套接字 #include <arpa/inet.h>//ip地址处理 #include <fcntl.h>//open系统调用 #include <unistd.h>//write系统调用 #include <netdb.h>//…...

Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction (思维题)

题目 给定长为n-1(n<2e5)的整数序列a&#xff0c;第i个数a[i](0<a[i]<2n) 构造一个长为n的整数序列b&#xff0c;满足&#xff1a; 1. 0到n-1在b数组中每个数恰好出现一次 2. 对于&#xff0c; 题目保证一定有解&#xff0c;有多组时可以输出任意一组 思路来源 …...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

Linux入门课的思维导图

耗时两周&#xff0c;终于把慕课网上的Linux的基础入门课实操、总结完了&#xff01; 第一次以Blog的形式做学习记录&#xff0c;过程很有意思&#xff0c;但也很耗时。 课程时长5h&#xff0c;涉及到很多专有名词&#xff0c;要去逐个查找&#xff0c;以前接触过的概念因为时…...

Spring Boot 与 Kafka 的深度集成实践(二)

3. 生产者实现 3.1 生产者配置 在 Spring Boot 项目中&#xff0c;配置 Kafka 生产者主要是配置生产者工厂&#xff08;ProducerFactory&#xff09;和 KafkaTemplate 。生产者工厂负责创建 Kafka 生产者实例&#xff0c;而 KafkaTemplate 则是用于发送消息的核心组件&#x…...

PCA笔记

✅ 问题本质&#xff1a;为什么让矩阵 TT 的行列式为 1&#xff1f; 这个问题通常出现在我们对数据做**线性变换&#xff08;旋转/缩放&#xff09;**的时候&#xff0c;比如在 PCA 中把数据从原始坐标系变换到主成分方向时。 &#x1f4cc; 回顾一下背景 在 PCA 中&#xff…...