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

leetcode 115.不同的子序列

思路:LCS类dp

这道题的思考思路其实就是把以两个字符串结尾作为状态方程。

dp[i][j]的意义就是在s字符串在以s[i]结尾的字符串的情况下,所能匹配出t字符串以t[j]结尾的字符串个数。

本质上其实是一个LCS类的状态方程,只不过是意义不一样了,转移方程不一样了。

那么,我们知道了状态意义之后,我们就需要知道转移方程怎么写。

首先我们需要比较每一个字符串,以s作为匹配的主体,去匹配t。当s[i]==t[j]的时候,说明这个时候结尾处我们是可以用这意味匹配的,那么我们这一位考虑和t[j]匹配了之后,就只需要考虑后面的字符串就行了,也就是dp[i-1][j-1]。但是我们还有一种情况,比如bagg,和bag这个距离,我们除了判断除了dp[i-1][j-1]这个状态之外,需要知道dp[i-1][j]的状态,因为这里我们如果不考虑s[i]的匹配了(选与不选的问题),那么上一位我们就需要考虑是不是和当前t的这一位匹不匹配。

之后,就是s[i]!=t[j]的情况,这里就简单了,因为无论如何s[i]都不能满足t[j]的匹配,我们只需要考虑上一位的匹配情况就可以了。

注意:初始化的时候我们需要额外注意,在t为空的时候,我们无论怎么匹配就只有一种情况,也就是dp[i][0]=1,因为只有一个空集能够匹配;当s为空的时候,其实就没有什么匹配情况了,本身需要匹配的字符串都没有,也就没有什么个数方案了,也就是dp[0][i]=0。

当然,当s,t都是空的时候,也就是一种方案,都是匹配空集。

还有,在递推的过程中,其实dp可能会暴int,所以需要及时在中途进行类型变化并取余。

class Solution {
public:int numDistinct(string s, string t) {vector<vector<int>>dp(s.size()+1,vector<int>(t.size()+1,0));for(int i=1;i<=s.size();i++){dp[i][0]=1;}for(int i=1;i<=t.size();i++){dp[0][i]=0;}dp[0][0]=1;for(int i=1;i<=s.size();i++){for(int j=1;j<=t.size();j++){if(s[i-1]==t[j-1]){dp[i][j]=(long)(dp[i-1][j-1]+dp[i-1][j])%1000000007;}else{dp[i][j]=(long)dp[i-1][j]%1000000007;}}}return dp[s.size()][t.size()];}
};

相关文章:

leetcode 115.不同的子序列

思路&#xff1a;LCS类dp 这道题的思考思路其实就是把以两个字符串结尾作为状态方程。 dp[i][j]的意义就是在s字符串在以s[i]结尾的字符串的情况下&#xff0c;所能匹配出t字符串以t[j]结尾的字符串个数。 本质上其实是一个LCS类的状态方程&#xff0c;只不过是意义不一样了…...

二叉树的顺序实现-堆

一、什么是堆 在数据结构中&#xff0c;堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;用数组存储&#xff0c;通常被用来实现优先队列。 堆具有以下特点&#xff1a; 堆是一棵完全二叉树&#xff08;Complete Binary Tree&#xff09;&#xff0c;即…...

【Maven】Maven主要知识点目录整理

1. Maven的基本概念 作者相关文章链接&#xff1a; 1、【Maven】简介_下载安装-CSDN博客 定义&#xff1a;Maven是Apache的一个开源项目&#xff0c;是Java开发环境中用于管理和构建项目&#xff0c;以及维护依赖关系的强大软件项目管理工具。作用&#xff1a;简化了项目依赖…...

Coolmuster Android Assistant: 手机数据管理的全能助手

在数字化时代&#xff0c;智能手机不仅是通讯工具&#xff0c;更是个人数据的中心。随着数据量的不断增加&#xff0c;如何有效管理和保护这些数据成为了一个重要议题。Coolmuster Android Assistant应运而生&#xff0c;它是一款专为安卓用户设计的综合数据管理软件&#xff0…...

03-树3 Tree Traversals Again(浙大数据结构PTA习题)

03-树3 Tree Traversals Again 分数 25 作者 陈越 An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, th…...

Java项目对接redis,客户端是选Redisson、Lettuce还是Jedis?

JAVA项目对接redis&#xff0c;客户端是选Redisson、Lettuce还是Jedis&#xff1f; 一、客户端简介1. Jedis介绍2. Lettuce介绍3. Redisson介绍 二、横向对比三、选型说明 在实际的项目开发中&#xff0c;对于一个需要对接Redis的项目来说&#xff0c;就面临着选择合适的Redis客…...

AngularJS Web前端框架:深入探索与应用实践

AngularJS Web前端框架&#xff1a;深入探索与应用实践 AngularJS&#xff0c;作为一款强大的Web前端框架&#xff0c;为开发者提供了丰富的功能和工具&#xff0c;使得构建复杂且交互性强的Web应用变得更为便捷。本文将从四个方面、五个方面、六个方面和七个方面对AngularJS进…...

SQL 入门:使用 MySQL 进行数据库操作

SQL 入门&#xff1a;使用 MySQL 进行数据库操作 目录 引言SQL 基础 SQL 语言概述MySQL 简介 数据库设计基础 数据库与表的设计常见数据类型 MySQL 安装与配置 安装 MySQL基本配置与连接 基本 SQL 语句 数据库的创建与删除表的创建、修改与删除数据插入、更新与删除 数据查询…...

window安装ffmpeg播放本地摄像头视频

1、安装ffmpeg ffmpeg官方网站&#xff1a;FFmpeg 下载后解压文件夹名为ffmpeg 2、设置环境变量 目录 1、安装ffmpeg 设置环境变量 以F:\software\after\ffmpeg\bin为例 在命令行中输入ffmpeg出现下方代表安装成功 3、通过ffmpeg播放本地电脑摄像头 鼠标右击开始按钮&…...

【嵌入式DIY实例】-OLED显示网络时钟

OLED显示网络时钟 文章目录 OLED显示网络时钟1、硬件准备与接线2、代码实现在上一个ESP8266 NodeMCU文章中,我们用DS3231 RTC芯片和SSD1306 OLED制作了一个简单的实时时钟,时间和日期显示在SSD1306屏幕上,并且可以通过两个按钮进行设置。 在本中,我们将使用ESP 8266 NodeMC…...

【线程相关知识】

今日内容概要 开启线程的两种方式TCP服务端实现并发效果线程对象的join方法线程间数据共享线程对象属性及其他方法守护线程线程互斥锁GIL全局解释器锁多进程与多线程的实际应用场景 今日内容详细 开启线程的两种方式 # import time # from multiprocessing import Process #…...

鸿蒙ArkTS声明式开发:跨平台支持列表【透明度设置】 通用属性

透明度设置 设置组件的透明度。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…...

【SQL学习进阶】从入门到高级应用(九)

文章目录 子查询什么是子查询where后面使用子查询from后面使用子查询select后面使用子查询exists、not existsin和exists区别 union&union alllimit &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f495;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面…...

Web前端三大主流框架技术分享

在当今快速发展的互联网时代&#xff0c;Web前端技术作为连接用户与服务的桥梁&#xff0c;其重要性不言而喻。随着技术的不断进步&#xff0c;为了提升开发效率、优化用户体验&#xff0c;一系列强大的前端框架应运而生。其中&#xff0c;Angular、React和Vue.js作为当前最为主…...

dockers安装mysql

1.dockerhub上搜索自己需要安装得镜像版本 dockerhub网址&#xff1a;https://hub-stage.docker.com docker pull mysql:5.7 #下载自己需要得版本2.启动容器实例&#xff0c;并且挂载容器数据卷 docker run -d -p 3306:3306 --privilegedtrue \ -v /home/mysql/log:/var/log/…...

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵 问题解读 给定一个 n x n 的二进制矩阵&#xff0c;每个元素是 0 或 1。我们的任务是计算矩阵中所有边长为 k 的子矩阵中&#xff0c;包含特定数量 1 的情况。例如&#xff0c;我们希望找到所有边长为 k 的子矩阵中包含 k…...

从摇一摇到弹窗,AD无处不在?为了不再受打扰,推荐几款好用的屏蔽软件,让手机电脑更清爽

当我们沉浸在智能手机带来的便捷与乐趣中时&#xff0c;内置AD如同不速之客&#xff0c;时常打断我们的体验。 尤其是手机上那些“摇一摇”跳转&#xff0c;稍有不慎就会跳转到其他应用&#xff0c;令人不胜其烦。同样&#xff0c;电脑上的内置AD也如影随形&#xff0c;影响了我…...

HackTheBox-Machines--Nibbles

Nibbles 测试过程 1 信息收集 NMAP 80 端口 网站出了打印出“Hello world&#xff01;”外&#xff0c;无其他可利用信息&#xff0c;但是查看网页源代码时&#xff0c;发现存在一个 /nibbleblog 文件夹 检查了 http://10.129.140.63/nibbleblog/ &#xff0c;发现了 /index.p…...

东方博宜1703 - 小明买水果

问题描述 小明去超市买了若干斤水果&#xff0c;你能根据水果的单价&#xff0c;小明买的水果数量&#xff0c;编一个程序计算出总金额&#xff0c;并打印出清单。 输入 输入两个值&#xff0c; 第一个为商品的单价&#xff0c;是一个小数。 第二个为商品的数量&#xff0c;…...

mac电脑用谷歌浏览器对安卓手机H5页面进行inspect

1、mac上在谷歌浏览器上输入 chrome://inspect 并打开该页面。 2、连接安卓手机到Mac电脑&#xff1a;使用USB数据线将安卓手机连接到Mac电脑。 3、手机上打开要的h5页面 Webview下面选择要的页面&#xff0c;点击inspect&#xff0c;就能像谷歌浏览器页面打开下面的页面&#…...

动手学深度学习(Pytorch版)代码实践-深度学习基础-01基础函数的使用

01基础函数的使用 主要内容 张量操作&#xff1a;创建和操作张量&#xff0c;包括重塑、填充、逐元素操作等。数据处理&#xff1a;使用pandas加载和处理数据&#xff0c;包括处理缺失值和进行one-hot编码。线性代数&#xff1a;包括矩阵运算、求和、均值、点积和各种范数计算…...

vm-bhyve:bhyve虚拟机的管理系统@FreeBSD

先说情况&#xff0c;当前创建虚拟机后网络没有调通....不明白是最近自己点背&#xff0c;还是确实有难度... 缘起&#xff1a; 前段时间学习bhyve虚拟机&#xff0c;发现bvm这个虚拟机管理系统&#xff0c;但是实践下来发现网络方面好像有问题&#xff0c;至少我花了两天时间…...

【Java】刚刚!突然!紧急通知!垃圾回收!

【Java】刚刚&#xff01;突然&#xff01;紧急通知&#xff01;垃圾回收&#xff01; 文章目录 【Java】刚刚&#xff01;突然&#xff01;紧急通知&#xff01;垃圾回收&#xff01;从C语言的内存管理引入&#xff1a;手动回收Java的垃圾回收机制引用计数器循环引用问题 可达…...

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解

目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列&#xff1a; 相对顺序是跟源字符串/数组是一致的但是元素和元素之间&#xff0c;在源字符串/数组中可以是不连续的一般时间…...

【稳定检索】2024年心理学与现代化教育、媒体国际会议(PMEM 2024)

2024年心理学与现代化教育、媒体国际会议 2024 International Conference on Psychology and Modern Education and Media 【1】会议简介 2024年心理学与现代化教育、媒体国际会议即将召开&#xff0c;这是一场汇聚全球心理学、教育及媒体领域精英的学术盛宴。 本次会议将深入探…...

深入了解diffusion model

diffusion model是如何运作的 会输入当时noise的严重程度&#xff0c;根据我们的输入来确定在第几个step&#xff0c;并做出不同的回应。 Denoise模组内部实际做的事情 产生一张图片和产生noise难度是不一样的&#xff0c;若denoise 模块产生一只带噪声的猫说明这个模块已经会…...

TransmittableThreadLocal原理

1、原理 TransmittableThreadLocal&#xff08;简称TTL&#xff09;是阿里巴巴开源的一个Java库&#xff0c;用于解决线程池中线程本地变量传递的问题。其底层原理主要是基于Java的ThreadLocal机制并对其进行扩展&#xff0c;以支持在父子线程间以及线程池中任务切换时&#x…...

华为昇腾310B初体验,OrangePi AIpro开发板使用测评

0、写在前面 很高兴收到官方的OrangePi AIpro开发板测试邀请&#xff0c;在过去的几年中&#xff0c;我在自己的博客写了一系列有关搭载嵌入式Linux系统的SBC&#xff08;单板计算机&#xff09;的博文&#xff0c;包括树莓派4系列、2K1000龙芯教育派、Radxa Rock5B、BeagleBo…...

GPTQ 量化大模型

GPTQ 量化大模型 GPTQ 算法 GPTQ 算法由 Frantar 等人 (2023) 提出&#xff0c;它从 OBQ 方法中汲取灵感&#xff0c;但进行了重大改进&#xff0c;可以将其扩展到&#xff08;非常&#xff09;大型的语言模型。 步骤 1&#xff1a;任意顺序量化 OBQ 方法选择权重按特定顺序…...

【GD32】05 - PWM 脉冲宽度调制

PWM PWM (Pulse Width Modulation) 是一种模拟信号电平的方法&#xff0c;它通过使用数字信号&#xff08;通常是方波&#xff09;来近似地表示模拟信号。在PWM中&#xff0c;信号的占空比&#xff08;即高电平时间占整个周期的比例&#xff09;被用来控制平均输出电压或电流。…...

JVM思维导图

帮助我们快速整理和总结JVM相关知识&#xff0c;有结构化认识和整体的思维模型 JVM相关详细知识和面试题...

Ollama+OpenWebUI+Phi3本地大模型入门

文章目录 Ollama+OpenWebUI+Phi3本地大模型入门一、基础环境二、Ollama三、OpenWebUI + Phi3Ollama+OpenWebUI+Phi3本地大模型入门 完全不懂大模型的请绕道,相信我李一舟的课程比较适合 Ollama提供大模型运行环境,OpenWebUI提供UI,Phi3就是那个大模型。 当然,Ollama支持超级…...

实战15:bert 命名实体识别、地址解析、人名电话地址抽取系统-完整代码数据

直接看项目视频演示: bert 命名实体识别、关系抽取、人物抽取、地址解析、人名电话地址提取系统-完整代码数据_哔哩哔哩_bilibili 项目演示: 代码: import re from transformers import BertTokenizer, BertForTokenClassification, pipeline import os import torch im…...

js 表格添加|删除一行交互

一、需求 二、实现 <div style"margin-bottom: 55px"><form action"" method"post" enctype"multipart/form-data" id"reportForm" name"sjf" style"margin-left: 25px;margin-bottom: 50px;&quo…...

如何选择合适的服务器硬件和配置?

业务需求 了解您的业务需求和负载。这将帮助您确定需要哪种类型的服务器&#xff08;如文件服务器、数据库服务器、Web服务器等&#xff09;以及所需的处理能力、内存、存储和网络性能。...

Prometheus + Grafana + Alertmanager 系统监控

PrometheusGrafana 系统监控 1. 简介1.1 Prometheus 普罗 米修斯1.2 Grafana 2. 快速试用2.1 Prometheus 普罗 米修斯2.2 Prometheus 配置文件2.3 Grafana 2. 使用 Docker-Compose脚本部署监控服务3. Grafana 配置3.1 配置数据源 Prometheus3.2 使用模板ID 配置监控模板3.3 使用…...

5.23R语言-参数假设检验

理论 方差分析&#xff08;ANOVA, Analysis of Variance&#xff09;是统计学中用来比较多个样本均值之间差异的一种方法。它通过将总变异分解为不同来源的变异来检测因子对响应变量的影响。方差分析广泛应用于实验设计、质量控制、医学研究等领域。 方差分析的基本模型 方差…...

rnn 和lstm源码学习笔记

目录 rnn学习笔记 lstm学习笔记 rnn学习笔记 import torchdef rnn(inputs, state, params):# inputs的形状: (时间步数量, 批次大小, 词表大小)W_xh, W_hh, b_h, W_hq, b_q paramsH stateoutputs []# 遍历每个时间步for X in inputs:# 计算隐藏状态 HH torch.tanh(torch.…...

解析Java中1000个常用类:CharSequence类,你学会了吗?

在 Java 编程中,字符串操作是最常见的任务之一。为了提供一种灵活且统一的方式来处理不同类型的字符序列,Java 引入了 CharSequence 接口。 通过实现 CharSequence 接口,各种字符序列类可以提供一致的 API,增强了代码的灵活性和可扩展性。 本文将深入探讨 CharSequence 接…...

微服务远程调用之拦截器实战

微服务远程调用之拦截器实战 前言&#xff1a; 在我们开发过程中&#xff0c;很可能是项目是从0到1开发&#xff0c;或者在原有基础上做二次开发&#xff0c;这次是根据已有代码做二次开发&#xff0c;需要在我们微服务一【这里方便举例&#xff0c;我们后面叫模版微服务】调用…...

德人合科技——天锐绿盾内网安全管理软件 | -文档透明加密模块

天锐绿盾文档加密功能能够为各种模式的电子文档提供高强度加密保护&#xff0c;丰富的权限控制以及灵活的应用管理&#xff0c;帮助企业构建更严密的立体保密体系。 PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee ————…...

超融合架构下,虚拟机高可用机制如何构建?

作者&#xff1a;SmartX 产品部 钟锦锌 虚拟机高可用&#xff08;High Availability&#xff0c;简称 HA&#xff09;是虚拟化/超融合平台最常用、关键的功能之一&#xff0c;可在服务器发生故障时通过重建业务虚拟机以降低故障对业务带来的影响。因此&#xff0c;为了充分保障…...

工厂模式详情

一.介绍工厂模式的用途与特点 工厂方法模式是一种创建型设计模式&#xff0c; 其在父类中提供一个创建对象的方法&#xff0c; 允许子类决定实例化对象的类型。定义工厂方法模式(Fatory Method Pattern)是指定义一个创建对象的接口&#xff0c;但让实现这个接口的类来决定实例…...

【Word】调整列表符号与后续文本的间距

1. 默认的列表格式&#xff1a; 2. 修改间距&#xff1a; ************************************************** 分割线 ************************************************************ 3. 效果...

匠心独运,B 端系统 UI 演绎华章之美

匠心独运&#xff0c;B 端系统 UI 演绎华章之美...

Java电商平台-开放API接口签名验证(小程序/APP)

说明&#xff1a;在实际的生鲜业务中&#xff0c;不可避免的需要对外提供api接口给外部进行调用. 这里就有一个接口安全的问题需要沟通了。下面是干货: 接口安全问题 请求身份是否合法&#xff1f; 请求参数是否被篡改&#xff1f; 请求是否唯一&#xff1f; AccessKey&am…...

Tale全局函数对象base

目录 1、 Tale全局函数对象base 1.1、 * tale alert删除 1.2、 * 成功弹框 1.3、 * 弹出成功,并在500毫秒后刷新页面 1.4、 * 警告弹框 1.5、 * 询问确认弹框,这里会传入then函数进来...

【启程Golang之旅】掌握Go语言数组基础概念与实际应用

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…...

COMSOL中液晶材料光学特性模拟

前面我们根据FDTD官方文档设置了液晶指向的模型。COMSOL也可以根据相似的方法设置各项异性的周期性变化的材料。 该方法参考了luneburg_lens的COMSOL文档 在给出的文件中&#xff0c;可以发现定义-变量中可以使用默认坐标作为变量&#xff0c;即xyz。因此&#xff0c;折射率也可…...

虚拟现实环境下的远程教育和智能评估系统(五)

查阅相关VR眼动注意力联合教育学相关论文 1.Exploring Eye Gaze Visualization Techniques for Identifying Distracted Students in Educational VR&#xff08;IEEE VR 2020&#xff09; 摘要&#xff1a;我们提出了一种架构&#xff0c;使VR教学代理能够响应眼动追踪监控…...