代码随想录算法训练营33期 第五十五天 | 392.判断子序列、115.不同的子序列

server/2024/9/23 9:20:40/

392.判断子序列

// dp[i][i] s[0到i-1]和s[0到j-1]的最大相同子序列长度
// if (s[i-1]==t[j-1]) dp[i][j]=dp[i-1][j-1]+1;
// else dp[i][j]=dp[i][j-1];注意,我们只是在对比j中的情况,所以是j-1
// dp[0][0]=0
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()+1; i++){for (int j=1; j<t.size()+1; 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;}
};

注意dp数组的可视化如下,dp的大小为dp(s.size()+1, vector(t.size()+1, 0));
在这里插入图片描述

115.不同的子序列

dp[i][j]的含义是s[0:i]和t[0:j]有多少个匹配的子序列
dp[i-1][j]表示s[0:i-2],t[0:j-1]中已经出现匹配的子序列的个数,当新获取的s[i-1]==t[j-1]时,自然这个相等的新元素可以继承前面以同样元素结尾的结果。dp[i-1][j-1]表示在新加入的元素s[i-1]==t[j-1]之前,是没有符合的子序列的,当这个新元素加入后才第一次出现匹配的子序列。

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

http://www.ppmy.cn/server/23171.html

相关文章

【C语言】变量占用内存的大小内存对齐

32位系统 64位系统类型 大小 大小 char 1 1 char * 4 8int 4 4 int * 4 8 short 2 2 short int 2 …

数据结构(九)---并查集

目录 1.集合 2.集合的相关操作 (1)查(Find)&#xff1a; •Find操作的优化 (2)并(Union)&#xff1a; •Union操作的优化 1.集合 数据元素之间的逻辑关系可以为集合&#xff0c;树形关系&#xff0c;线性关系&#xff0c;图关系。对于集合而言&#xff0c;一个集合可以划…

CSS基础——3.CSS盒子模型、浮动、定位

盒子模型是网页设计中经常用到的一种思维模型,由四个部分构成,从内到外分别为内容区(content)、内边距(padding)、边框(border)和外边距(margin),CSS 为这四个部分提供了一系列相关属性,通过对这些属性的设置可以丰富盒子的表现效果。 盒子的组成 外边距:margin 内…

EMQX 需要开放的端口各个都是什么意思

文章目录 问题描述解决方案 问题描述 大家好&#xff01;我是夏小花&#xff0c;今天在研究MQTT时&#xff0c;我是用docker装的&#xff0c;但是装完之后需要启动&#xff0c;然后看到docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 1808…

自动化密码填充:使用Python提高日常工作效率

密码是我们日常生活中难以逃脱的一部分。从解锁电脑到登录各种服务&#xff0c;我们需要记住无数的密码。幸运的是&#xff0c;通过Python和一些有用的库&#xff0c;我们可以简化填入密码的过程&#xff0c;使日常任务自动化变得简单。在本文中&#xff0c;我们将探讨如何使用…

探索互联网医院系统源码:在线问诊小程序开发教学

在线问诊小程序作为互联网医院系统的重要组成部分&#xff0c;为患者提供了更便捷、高效的医疗服务&#xff0c;成为了人们生活中不可或缺的一部分。今天&#xff0c;小编将带您探索互联网医院系统的源码&#xff0c;并介绍在线问诊小程序的开发教学&#xff0c;带领读者深入了…

httpClient提交报文中文乱码

httpClient提交中文乱码&#xff0c;ContentType类型application/json 指定提交参数的编码即可 StringEntity se new StringEntity(paramBody.toJSONString(),"UTF-8");se.setContentType("application/json");context.httpPost.setHeader("Cookie&…

Android --- 常见UI组件

TextView 文本视图 设置字体大小&#xff1a;android:textSize"20sp" 用sp 设置颜色&#xff1a;android:textColor"#00ffff" 设置倍距(行距)&#xff1a;android:lineSpacingMultiplier"2" 设置具体行距&#xff1a;android:lineSpacingExtra&q…