代码随想录Day 47|Leetcode|Python|392.判断子序列 ● 115.不同的子序列

392.判断子序列 

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

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

进阶:

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

致谢:

特别感谢 @pbrother 添加此问题并且创建所有测试用例。

解题思路:

确认dp含义:dp[i][j]以i-1 和j-1结尾的数组相同字符数最大数量

递推公式:当s[i-1] == t[j-1],dp[i][j] = dp[i-1][j-1]+1,else 将t倒退前一位得到dp[i][j-1],这里因为t比s大,在t中判断是否有s,因此s不用倒退一个

初始化:dp[i][0] = 0, dp[0][j] = 0

遍历顺序:从前到后

打印dp数组

class Solution:
    def isSubsequence(self, s: str, t: str) -> bool:
        dp = [[0]*(len(t)+1) for _ in range(len(s)+1)]
        res = 0
        for i in range(1, len(s)+1):
            for j in range(1, len(t)+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]
                res = max(res, dp[i][j])
        return res==len(s)

 115.不同的子序列 

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

解题思路:

确认dp数组含义:dp[i][j]在i以-1为尾的s子序列中包含了多少个以j-1结尾的t子序列

递推公式:当s[i-1]==t[j-1]时有两种情况,s, t各倒退一个,s倒退一个得到dp[i-1][j]里包含了多少个以j-1为结尾的t子序列。当s[i-1] != t[j-1], dp[i][j] = dp[i-1][j]

初始化:dp[0][j]:空字符串“”中包含了多少个以j-1结尾的t子字符串,0个,dp[i][0],s[i-1]中包含了1个空字符串,dp[0][0] = 1

遍历顺序:从前到后

打印dp数组

代码如下:

class Solution:
    def numDistinct(self, s: str, t: str) -> int:
        dp = [[0]*(len(t)+1) for _ in range(len(s)+1)]
        for i in range(len(s)+1):
            dp[i][0] = 1
        dp[0][0] = 1
        for i in range(1, len(s)+1):
            for j in range(1, len(t)+1):
                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[len(s)][len(t)]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot房屋租赁系统

摘要 房屋租赁系统;为用户提供了一个房屋租赁系统平台,方便管理员查看及维护,并且可以通过需求进行设备信息内容的编辑及维护等;对于用户而言,可以随时进行查看房屋信息和合同信息,并且可以进行报修、评价…

熟知Linux目录结构,配置网络(超级详细……)

一、目录结构 1.1目录的特点 Windows和Linux win:是一个多根系统 Linux:只有一个根是一个单根系统 1.2各个目录存储的内容 /root:Linux中管理员用户的家目录 /home:Linux中存储普通用户的家目录例:tom用户的家目录就…

matlab使用教程(71)—控制坐标区布局

1.与位置相关的属性和函数 有几个属性和函数可用于获取和设置坐标区的大小与位置。下表摘要显示了这些属性和函数。 函数或属性描述 OuterPosition 属性 使用此属性可以查询或更改坐标区的外边界,包括标题、标签和边距。要更改外边界,请将此属性指定为…

Android 异常开机半屏重启代码分析

Android 的稳定性是 Android 性能的一个重要指标,它也是 App 质量构建体系中最基本和最关键的一环;如果应用经常崩溃,或者关键功能不可用,那显然会对我们的留存产生重大影响所以为了保障应用的稳定性,我们首先应该树立…

SpringBoot(一)之初始化

SpringBoot(一)之初始化 文章目录 SpringBoot(一)之初始化SpringBoot框架 SpringBoot简化配置1. 创建SpringBoot项目关于初始化错误 2. SpringBoot项目结构主类pom.xml1. 关于spring-boot-starter-parent2. 关于spring-boot-starter-web3. 关于spring-boot-starter-test4. 关于…

Shopee、Lazada等平台怎么做测评?

最近有很多人咨询南哥跨境电商平台测评应该怎么做,今天我就针对东南亚站点,详细跟大家分享一下东南亚平台测评需要哪些资源 测评环境系统 不管做任何平台,首先你要有一个稳定的测评环境系统,测评环境系统的底层逻辑就是通过一台…

80%的产品经理被辞退不是因为能力,而是因为…

新手刚入门做产品经理,对产品经理的工作其实也是没有把握,这是对这份工作不够了解,不知道整个工作的流程,所以会感觉“没把握”,结果就是导致焦虑。 如果你硬着头皮做一遍,知道大概是怎么回事,…

Redis过期删除策略和内存淘汰策略有什么区别?

Redis过期删除策略和内存淘汰策略有什么区别? 前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么? 内存淘汰策略如何设置 Redis 最大运行内存?Redis 内…

电脑版的学浪课程下载方法

想在你的电脑上无限制地访问你最爱的学浪课程吗?现在,让我揭秘如何用几个简单步骤,轻松下载任何学浪课程到你的电脑,让学习不再受时间和地点的限制,随时随地都是你的课堂。 下载学浪视频的工具,我已经打包…

前端 JS 经典:数组去重万能方法

前言:只需要掌握这一个方法,就可以对有任何重复的数据数组,进行去重了。 可以自己思考下,怎么对以下对象数组去重: const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

数据中台管理系统原型

数据中台是一个通用性的基础平台,适用于各类行业场景,数据中台包含多元数据汇聚、数据标准化、数据开发、数据共享、数据智能、数据资产管理等功能,助力企业数字化转型。 数据汇聚 数据汇聚是将不同系统、不同类型的多元源数据汇聚至目标数据…

第二十届文博会中芬设计园分会场:发展新质生产力,释放文化创新活力

今年是中国(深圳)国际文化产业博览交易会(以下简称“文博会”)创办20周年,二十蝶变再启航,站在新的历史起点上,本届文博会将重点突出数字赋能、强化交易功能、激发和扩大文化消费、弘扬文化传承…

端午佳节,品尝食家巷传统面点与黄米粽子礼盒

端午佳节,品尝食家巷传统面点与黄米粽子礼盒 在这个端午节来临之际,食家巷倾情推出一款别具特色的端午礼盒,将甘肃的传统面点与地方特色黄米粽子完美融合,为您带来一场美味与传统的邂逅。 这款礼盒以甘肃传统面点一窝丝、油饼和烤…

立创EDA绘制PCB电路板

1、绘制好原理图后,点击设计---原理图转PCB,生成PCB文件 2、将元器件拖入电路板方框内,摆放布局并使用工具栏布线、放置过孔及丝印 3、然后顶层和底层铺铜 4、后面就可以生成制板文件发送嘉立创制板了。

干货教程【AI篇】| Topaz Video Enhance AI超好用的视频变清晰变流畅的AI工具,免费本地使用

关注文章底部公众号,回复关键词【tvea】即可获取Topaz Video Enhance AI。 一款非常好用的视频变清晰变流畅的AI工具,即提高视频的分辨率和FPS,亲测效果非常nice!! 免费!免费!免费&#xff01…

Google IO 2024有哪些看点呢?

有了 24 小时前 OpenAI 用 GPT-4o 带来的炸场之后,今年的 Google I/O 还未开始,似乎就被架在了一个相当尴尬的地位,即使每个人都知道 Google 将发布足够多的新 AI 内容,但有了 GPT-4o 的珠玉在前,即使是 Google 也不得…

笑铺日记:服装店看这3个数字,就知道赚不赚钱

明明店里每天人来人往,月底一算账,却发现没赚多少钱? 都说要数据分析,但是到底怎么做?这是每个老板都头疼不已的事情。 其实,服装店管好这3个数字,赚钱就不是事儿。 笑铺日记系统&#xff0c…

什么是等保测评?等保测评必须进行吗?

等保测评,全称为信息安全等级保护测评,是指对信息系统安全等级保护状况进行测试评估的活动。它是根据国家信息安全等级保护规范规定,由具有相应资质的测评机构,按照相关管理规范和技术标准进行的,目的是验证信息系统是…

深度学习技术之卷积神经网络

深度学习技术 卷积神经网络1. 导入需要的库2. 加载并显示两张图像2.1 加载图像2.2 创建子图2.3 打印图像形状2.4 打印合并后的图像数组的形状 3. 卷积层3.1 定义变量3.1.1 卷积核的大小(u)3.1.2 滑动步长(s)3.1.3 输出特征图的数量…

集成了Gemini的Android Studio,如虎添翼

今天将Android Studio升级到最新版(Jellyfish)。发现在new features中有一条: Code suggestions with Gemini in Android Studio 打开路径为: View > Tool Windows > Gemini 支持多国语言,英文、中文都能正确理解…