代码随想录 -- day55 --392.判断子序列 、115.不同的子序列

Data+AI新玩法:Text2SQL让数据查询变得如此简单! 你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。 阅读详情

392.判断子序列 

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要删除元素,继续匹配

if (s[i - 1] == t[j - 1]),那么dp[i][j] = dp[i - 1][j - 1] + 1;,因为找到了一个相同的字符,相同子序列长度自然要在dp[i-1][j-1]的基础上加1(如果不理解,在回看一下dp[i][j]的定义)

if (s[i - 1] != t[j - 1]),此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];

class Solution {
public:
    bool isSubsequence(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 ++)
        {
            for(int j = 1; j <= t.size(); 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];
            }
            
        }
        if(dp[s.size()][t.size()] == s.size())
        {
            return true;
        }
        return false;
    }
};

115.不同的子序列

dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。

  • s[i - 1] 与 t[j - 1]相等
  • s[i - 1] 与 t[j - 1] 不相等

当s[i - 1] 与 t[j - 1]相等时,dp[i][j]可以有两部分组成。

一部分是用s[i - 1]来匹配,那么个数为dp[i - 1][j - 1]。即不需要考虑当前s子串和t子串的最后一位字母,所以只需要 dp[i-1][j-1]。

一部分是不用s[i - 1]来匹配,个数为dp[i - 1][j]。

class Solution {
public:
    int numDistinct(string s, string t) {
        vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1));
        for(int i = 0; i < s.size(); i++)
        {
            dp[i][0] = 1;
        }
        for(int j = 1; j < t.size(); j++)
        {
            dp[0][j] = 0;
        }

        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] = dp[i - 1][j - 1] + dp[i - 1][j];
                else dp[i][j] = dp[i - 1][j];
            }
        }
        return dp[s.size()][t.size()];
    }
};

Unity插件——WebView内嵌网页/浏览器插件 一、相关插件: 1、Embedded Browser 插件(文件夹名ZFBrowserUnity) 2、UniWebView插件 3、UnityAndroidWebviewToTexture插件 4、3D WebView for Android插件 二、遇到的问题: 3D WebView显示问题 项目中使用3D WebView存在的问题 三、插件使用 Embedded Browser 加载页面的使用 阅读详情

相关推荐

数码管动态扫描避坑指南:如何用188芯片实现50Hz无闪烁显示?

本文深入解析188数码管动态扫描技术,提供工业级无闪烁显示方案。通过优化轮询扫描机制、硬件电路设计和软件架构,实现50Hz高刷新率显示,解决亮度不均和鬼影问题,适用于医疗设备和工业控制面板等高要求场景。

hhh00的博客 975

代码随想录Day55|392.判断子序列、115.不同的子序列

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

weixin_46620779的博客 654

ESP32 CAM安装配置 第四部份:通过使用ESPHome的方式ESP32 Cam加到HomeAssistant

这些包括 aec_value, aec2, ae_level, agc_gain, gain_ctrl, bpc, wpc, raw_gma, lenc, hmirror, dcw, colorbar 等。这些参数的可能值和具体效果会根据你的摄像头硬件和 ESPHome 的版本有所不同。在 ESPHome 中配置 ESP32 Cam 时,每个参数的可能值取决于具体的功能和支持范围。值的范围是 0 到 63,其中 0 是最差质量,63 是最佳质量。horizontal: 水平校正的强度,通常是一个数字值。

weixin_42895252的博客 3364

代码随想录算法训练营Day55|392.判断子序列、115.不同的子序列

今天练习的两道题目依然是子序列问题,一样的处理方法简化dp数组初始化,但是在具体实现上还是比较困难的,第一次尝试没有什么思路。

m0_68682181的博客 1109

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9482

告别CAPL编程!用Matlab/Simulink+CANoe实现复杂ECU仿真的5个技巧

本文介绍了如何利用Matlab/Simulink与CANoe进行联合仿真,以替代复杂的CAPL编程,高效实现复杂ECU仿真。文章分享了5个核心技巧,涵盖信号映射、模型编译集成、实时参数调整、性能优化及数据分析,帮助算法工程师构建稳定强大的仿真环境,显著提升开发与测试效率。

rgv234567的博客 296

代码随想录算法训练营day55 | 392.判断子序列,115.不同的子序列

子序列(编辑距离)

jzh013的博客 807

保姆级教程:手把手教你下载和配置Waymo自动驾驶数据集(附百度网盘链接)

本文提供了一份详细的Waymo自动驾驶数据集下载和配置指南,特别针对国内研究者优化了数据获取方案,包括百度网盘链接和Google Cloud CLI配置。文章还涵盖了环境配置、数据处理实战、可视化分析以及进阶技巧,帮助开发者高效利用这一业界黄金标准数据集进行自动驾驶研究。

weixin_42651281的博客 362

代码随想录day55|392.判断子序列|115.不同的子序列|Golang

笔记

weixin_42161901的博客 430

企业微信API实战:解密external_userid的跨应用一致性管理

本文深入探讨企业微信API中external_userid的跨应用一致性管理问题,解析其本质及在不同应用场景下的ID不一致挑战。通过ID转换与统一管理方案,结合unionid实现跨应用客户数据整合,提供实战代码示例和架构设计,助力企业构建高效的客户管理系统。

weixin_29258297的博客 637

深度学习特征融合(feature fusion)操作详解

特征融合是指在深度神经网络中,将来自不同来源(如不同网络分支、不同模态、不同时间步、不同空间尺度或不同抽象层级)的特征表示进行有策略地整合,以生成更具判别性、鲁棒性和语义丰富性的联合特征表示。其核心目标是最大化信息互补性,最小化信息冗余与噪声干扰。关键问题:如何“有效”融合?——这取决于任务需求、数据特性、计算资源和融合机制的设计。✅ 是否对齐了空间/通道/模态?✅ 融合方式是否与任务匹配?(检测需定位+语义 → 多尺度融合)✅ 是否引入可学习机制提升适应性?✅ 是否控制了计算开销?

浩瀚之水的专栏 793

代码随想录刷题day55 392.判断子序列;115.不同的子序列

代码随想录刷题day55

weixin_43127049的博客 264

k8s配置habor作为镜像地址之后,如果harbor中没有镜像,如何设置自动从阿里云官方镜像仓库下载

通过 Harbor 的远端仓库可以集中管理。如果你在上游设置了 image prefix 为 library,那么对外访问 harbor.your-domain.com/library/nginx:latest 就会被 Harbor 去上游拉取 registry.cn-hangzhou.aliyuncs.com/library/nginx:latest 并缓存。- 将集群中的镜像地址改为 Harbor 的域名,比如 harbor.your-domain.com/library/nginx:latest。

极客栈 423

代码随想录训练营Day55|● 392.判断子序列 ● 115.不同的子序列

115. 不同的子序列 - 力扣(LeetCode)392. 判断子序列 - 力扣(LeetCode)115.不同的子序列。115.不同的子序列。

weixin_44174445的博客 983

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

代码随想录训练营day55|392、判断子序列;115、不同的子序列

2、递推公式:if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;2、递推公式:dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];3、初始化:dp[i][0]一定都是1,dp[0][j]一定都是0,dp[0][0]应该是1,空字符串s,可以删除0个元素,变成空字符串t;1、dp数组:dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j];

weixin_43561267的博客 535

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列

代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列

DUM1615的博客 473

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

代码随想录 | Day 55 - LeetCode 392. 判断子序列、LeetCode 115. 不同的子序列

第0行,对应s为空,dp[0][j](j > 0)对应空字符“删除任意字符后出现t[0 : i - 1]”的个数,空字符无论怎么删除都还是空字符,所以有0中删除方式,dp[0][j](j > 0)都应该初始化为0。)需要首先将问题转化为“求s和t的最大相同子序列长度”,用dp[i][j]表示“s[0 : i - 1]和t[0 : j - 1]的最大相同子序列长度”(使用i - 1、j - 1而不用i、j的原因与之前一样,还是为了后面的初始化方便)。不断的右移t指针,使t指针所指的值匹配s指针所指的值。

weixin_43469527的博客 307

代码随想录二刷day55 | 动态规划之子序列 392.判断子序列 115.不同的子序列

动态规划之子序列 392.判断子序列 115.不同的子序列

baimaozi_007的博客 352

代码随想录算法训练营Day55 | 392. 判断子序列 | 115. 不同的子序列

但实际上,这是一道特殊版本的最长公共子序列,同时也是编辑距离的入门。看到多少种方法 + 子序列,第一反应是回溯所有的子序列,然而数据量很明显不可能支持回溯,题目难度也没有到必须暴力搜索的地步。题目要求判断 s 是否是 t 的子序列,其实相当于要求 s 和 t 的最大公共子序列的长度就是。dp 数组的初始化:对于当前的定义,初始化和之前是一样的,都是针对第一行和第一列进行单独的初始化。dp 数组的初始化:根据递推公式的要求,还是要初始化第一行和第一列。的递推公式进行了很长的讨论。的含义是反的,但不影响解题。

Kolbe_Huang的博客 468

代码随想录day55 | 动态规划P15 | ● 392.判断子序列 ● 115.不同的子序列

● 392.判断子序列 判断是否出现 ● 115.不同的子序列 判断出现个数

FhilMs的博客 845

代码随想录Day55——392.判断子序列 115.不同的子序列

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

cheng_dog的博客 113

LeetCode 392判断子序列 115不同的子序列 | 代码随想录25期训练营day55

动态规划算法12

weixin_66706867的博客 283

代码随想录算法训练营三刷day55 | 动态规划之子序列 392.判断子序列 115.不同的子序列

例如: s:bagg 和 t:bag ,s[3] 和 t[2]是相同的,但是字符串s也可以不用s[3]来匹配,即用s[0]s[1]s[2]组成的bag。与 字符串s的长度相同说明:s与t的最长相同子序列就是s,那么s 就是 t 的子序列。是以下标i为结尾的字符串s和以下标j为结尾的字符串t,初始化就比较麻烦了。表示以下标i-1为结尾的字符串,与空字符串的相同子序列长度,所以为。:空字符串s可以随便删除元素,出现以j-1为结尾的字符串t的个数。为结尾的s,删除所有元素,出现空字符串的个数就是1。

baimaozi_007的博客 1183

代码随想录算法训练营day 55 |392.判断子序列、115.不同的子序列

代码随想录算法训练day 55

wuhuqifei123的博客 299

代码随想录算法训练营day55|392.判断子序列 |115.不同的子序列

t[j - 1]),此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么。][j]表示以下标i-1为结尾的字符串s和以下标j-1为结尾的字符串t 相同子序列的长度,所以如果。表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为。与 字符串s的长度相同说明:s与t的最长相同子序列就是s,那么s 就是 t 的子序列。一定都是1,因为也就是把以i-1为结尾的s,删除所有元素,出现空字符串的个数就是1。:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为。

xinrenne的博客 195

代码随想录算法训练营day55| 392.判断子序列、115.不同的子序列

动态规划

weixin_45368277的博客 348
上一篇: 代码随想录 --- day22 -- 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、 450.删除二叉搜索树中的节点
下一篇: 代码随想录 -- day56 -- 583. 两个字符串的删除操作 、72. 编辑距离
七人酒
博客等级 码龄4年 51粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值