算法刷题记录 Day47

算法刷题记录 Day47

Date: 2024.04.15

lc 115. 不同的子序列

class Solution {
private:const int MOD = 1e9 + 7;
public:int numDistinct(string s, string t) {// t为模板串,s为原串;int m = t.size();int n = s.size();if(m > n)   return 0;// dp[i][j] 表示t[0,i]在s[0,j]的子序列中出现的次数。// dp[i][j] = dp[i][j-1] + dp[i-1][j-1] if t[i] == s[j]vector<vector<int>> dp(m, vector<int>(n, 0));// 根据递推公式,需要初始化第0行和第0列;// 第0列if(s[0] == t[0])dp[0][0] = 1;// 第0行int count = 0;for(int j=0; j<n; j++){if(s[j] == t[0])count++;dp[0][j] = count;}for(int i=1; i<m; i++){for(int j=i; j<n; j++){ // 必须大于等于t的长度才有可能不为0;dp[i][j] = dp[i][j-1];if(t[i] == s[j])dp[i][j] += dp[i-1][j-1];dp[i][j] = dp[i][j] % MOD;}}return dp[m-1][n-1];}
};

lc 392. 判断子序列

// dp
class Solution {
public:bool isSubsequence(string s, string t) {if(s == "") return true;if(s.size() > t.size()) return false;// dp// dp[i][j]表示s以i为结尾和t以j结尾时的子序列长度。// dp[i][j] = dp[i-1][j-1] + 1 if(s[i] == t[j]) else +0;int m = s.size();int n = t.size();vector<vector<int>> dp(m, vector<int>(n, 0));// 根据递推公式,需要初始化第一行和第一列。for(int i=0; i<m; i++){if(s[i] == t[0])dp[i][0] = 1;else{if(i != 0)dp[i][0] = dp[i-1][0];}}for(int j=0; j<n; j++){if(s[0] == t[j])dp[0][j] = 1;else{if(j != 0)dp[0][j] = dp[0][j-1];}}for(int i=1; i<m; i++){for(int j=1; j<n; j++){if(s[i] == t[j]){dp[i][j] = dp[i-1][j-1] + 1;}else{dp[i][j] = max(dp[i-1][j], dp[i][j-1]);}// cout<<"i, j:"<<i<<","<<j<<" dp[i][j]:"<<dp[i][j]<<endl;if(dp[i][j] == s.size())    // 提前退出return true;}}if(dp[m-1][n-1] == s.size())    return true;    // 主要为了处理m或n==1时的情况。else    return false;}
};// 双指针
class Solution {
public:bool isSubsequence(string s, string t) {// 判断s是否是t的子序列int p1 = 0; // 指向字符串s;int p2 = 0; // 指向字符串t;while(p1 < s.size() && p2 < t.size()){if(s[p1] == t[p2]){p1++;p2++;}else{p2++;}}if(p1 == s.size())return true;elsereturn false;}
};

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

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

相关文章

【Redis 神秘大陆】005 常见性能优化方式

五、Redis 性能优化 5.1 系统层面的优化 https://github.com/sohutv/cachecloud/blob/main/redis-ecs/script/cachecloud-init.sh initConfig() {# 支持虚拟内存分配sysctl vm.overcommit_memory1# 最大排队连接数设置为 511&#xff0c;一般默认是 128echo 511 >/proc/sy…

男生穿什么裤子最百搭?适合男生穿的裤子品牌测评分享

每个伙伴们想必经常都会选择一些裤子&#xff0c;但现在市面上的裤子品牌也实在太多了&#xff0c;好不容易选到了几件好看的裤子&#xff0c;结果质量却很不好。主要就是因为现在有太多商家为了利润而使用一些舒适性、质量差的面料&#xff0c;那么今天就给大家分享一些质量上…

引导和服务(2)

服务 1.systemd服务的简要介绍 &#xff08;1&#xff09;对比5 6 可以解决依赖关系并行启动 &#xff08;2&#xff09;按需启动 &#xff08;3&#xff09;自动解决依赖关系 负责在系统启动或运行时&#xff0c;激活系统资源&#xff0c;服务器进程和其它进程 2.System…

excel多sheet导出工具类——java

excel多sheet导出工具类 1、多个sheet导出工具类&#xff1a; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.user…

操作系统(第五周 第一二堂总结)

目录 回顾 前景知识 概述 定义 进程和线程的关系 进程和线程的区别 线程优缺点 优点&#xff1a; 缺点&#xff1a; 易混概念 线程实现方式 线程的类型&#xff1a; ​编辑 多线程模型&#xff1a; 线程函数 头文件&#xff1a; 线程创建函数&#xff1a; 线…

【团体程序设计天梯赛 往年关键真题 详细分析完整AC代码】L2-003 月饼(贪心) L2-004 这是二叉搜索树吗? (数据结构)

L2-003 月饼 贪心 月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给出的…

vscode i18n Ally插件配置项

.vscode文件&#xff1a; {"i18n-ally.localesPaths": ["src/lang"], //显示语言&#xff0c; 这里也可以设置显示英文为en,// 如下须要手动配置"i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested&#xff1a…

氟化钡与盐酸反应不

结论&#xff1a;反应 氟化钡 名称   中文名称&#xff1a;氟化钡   英文别名&#xff1a;Bariumfluoride 化学式   BaF2 相对分子质量   175.32 性状   无色透明立方结晶或白色粉末。溶于盐酸、硝酸、氢氟酸和氯化铵溶液&#xff0c;微溶于水。 相对密度4.83。 熔…

MongoDB 使用

1 引用依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>2 配置文件配置mongodb资料 # MongoDB连接信息 spring.data.mongodb.host 192.168.23.…

C#中的this关键字:详解与使用

在C#编程中&#xff0c;类和对象是构建应用程序的基础。面向对象编程的核心是封装、继承和多态。在类的内部&#xff0c;我们定义了成员变量和成员方法&#xff0c;这些成员变量和方法构成了对象的状态和行为。然而&#xff0c;在类的成员方法中&#xff0c;我们经常需要访问对…

(二)使用VS2022克隆下载C++自制植物大战僵尸游戏教程

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/uzrnw 本文将介绍如何使用VS2022克隆下载《植物大战僵尸C自制版本》。 Gitee项目地址&#xff1a; Gitee仓库地址https://gitee.com/GITLZ/PlantsVsZombies Github项目地址&#xff1a; Github仓库地址https://github…

linux运行node项目

文章目录 1、安装node2、安装forever node的守护进程3、forever操作3.1 启动相关3.2 停止操纵3.3 重启操作 1、安装node 下载node包&#xff0c;wget node链接进行解压增加配置文件 export PATH$PATH:node解压路径刷新配置文件node -v 查看node版本 2、安装forever node的守护…

我这10年的“搞站”路

我叫老牛&#xff0c;是高中室友给起的&#xff0c;原因很简单&#xff0c;我在8人寝室年龄排第六&#xff0c;四川话“老6”和“老牛”读音相仿。 后来我就把我的qq昵称改成了“L.N.”&#xff0c;我接受了这个称呼&#xff0c;因为自我审视&#xff0c;性格的确有执拗的一面&…

【JS】querySelectorAll和getElementsByClassName

现有一段代码&#xff0c;li的类名均为item&#xff0c;有一按钮可动态添加类名为item的li。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge…

【C++从练气到飞升】07---内存管理

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 一、 C/C内存分布 二、 C语言中动态内存管理方式 三、 C中动态内存管理 1. new/delete操作内置类型 2. new和delete操作…

Mongodb入门--头歌实验MongoDB 实验——数据备份和恢复

在实际的应用场景中&#xff0c;经常需要对业务数据进行备份以做容灾准备&#xff0c; MongoDB 提供了备份和恢复的功能&#xff0c;分别是 MongoDB 下的 一、数据备份 任务描述 本关任务&#xff1a;按照编程要求备份数据库。 相关知识 为了完成本关任务&#xff0c;你需要掌…

前端二维码工具小程序:营销裂变的好助手

一、摘要 在数字化营销日益盛行的今天&#xff0c;如何以新颖、高效的方式吸引用户&#xff0c;成为了每一个营销者所追求的目标。前端二维码工具小程序&#xff0c;作为一款集二维码生成、AI助手与绘图画画功能于一体的综合性工具&#xff0c;不仅为营销人员提供了全新的思路…

微服务架构核心组件介绍

微服务架构是一种设计方法&#xff0c;它将应用程序分解为一组小型、松散耦合的服务。每个服务运行在自己的进程中&#xff0c;并通常围绕业务能力组织。这种架构风格使得服务可以独立地部署、扩展和维护。在微服务架构中&#xff0c;有几个核心组件是至关重要的&#xff0c;它…

android 修改kernel编译版本信息

1&#xff0c;android版本&#xff1a; 在android/build/core/version_defaults.mk中红色部分 ifeq "" "$(BUILD_NUMBER)" # BUILD_NUMBER should be set to the source control value that # represents the current state of the source code. E.g…

0101tomcat部署war访问mysql失败-容器间通信-docker项目部署

文章目录 一、简介二、部署1、mysql数据迁移2、docker部署redis3、docker部署tomcat并运行war包 三、报错四、解决1 分析2 解决 结语 一、简介 最近参与开发一个项目&#xff0c;其中一部分系统需要迁移。从阿里云迁移到实体服务器&#xff0c;使用docker部署。系统使用Java语…