首页 > 编程语言 >代码随想录算法训练营第五十四天 | 115.不同的子序列,392.判断子序列

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

时间:2024-03-22 14:55:22浏览次数:38  
标签:fori babgbag ++ 随想录 len 115 序列 dp

392. 判断子序列

  已解答 简单  

相关标签

相关企业  

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

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

进阶:

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

致谢:

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

 

示例 1:

输入:s = "abc", t = "ahbgdc"
输出:true

示例 2:

输入:s = "axc", t = "ahbgdc"
输出:false

 

提示:

  • 0 <= s.length <= 100
  • 0 <= t.length <= 10^4
  • 两个字符串都只由小写字符组成。

 


package main

 

func isSubsequence(s string, t string) bool { // dp[i][j] s的i t的j 这两位置 是否是子序列 // 递推公式, s[i] == t[j] dp[i][j] = dp[i-1][j-1] else dp[i][j] = dp[i][j-1] // 初始化 dp[0] 0行 全为1 // 从1到end // 输出 dp := make([][]bool, len(s)+1) fori := 0; i < len(dp); i++ { dp[i] = make([]bool, len(t)+1) } fori := 0; i < len(t)+1; i++ { dp[0][i] = true } fori := 1; i < len(s)+1; i++ { forj := 1; j < len(t)+1; j++ { if s[i-1] == t[j-1] { dp[i][j] = dp[i-1][j-1] } else { dp[i][j] = dp[i][j-1] } } } return dp[len(s)][len(t)] }

 


115. 不同的子序列

  已解答 困难  

相关标签

相关企业  

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

 

示例 1:

输入:

输出
3
解释:
"rabbit" 的方案
rabbbit
rabbbit
rabbbit

示例 2:

输入:
输出
5
解释:
"bag" 的方案
babgbag
babgbag
babgbag
babgbag
babgbag

 

提示:

  • 1 <= s.length, t.length <= 1000
  • s 和 t 由英文字母组成

 


package main

 

func numDistinct(s string, t string) int { //dp[i][j] s的i t的j 不同子序列 这个位置的子序列个数 //递推公式 s[i] = t[j] dp[i][j] = dp[i-1][j-1]+dp[i][j-1] else dp[i][j] = dp[i][j-1] //初始化 0行为为1 //上到下,左到右 //输出 mod := 1000000007 dp := make([][]int, len(t)+1) fori := 0; i < len(dp); i++ { dp[i] = make([]int, len(s)+1) } fori := 0; i < len(s)+1; i++ { dp[0][i] = 1 } fori := 1; i < len(t)+1; i++ { forj := 1; j < len(s)+1; j++ { if t[i-1] == s[j-1] { dp[i][j] = (dp[i-1][j-1] + dp[i][j-1]) % mod } else { dp[i][j] = (dp[i][j-1]) % mod } } } return dp[len(t)][len(s)] }

标签:fori,babgbag,++,随想录,len,115,序列,dp
From: https://www.cnblogs.com/suxinmian/p/18089487

相关文章

  • 代码随想录算法训练营第十七天| 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶
    110.平衡二叉树https://leetcode.cn/problems/balanced-binary-tree/description/publicbooleanisBalanced(TreeNoderoot){intbalance=balance(root);returnbalance==-1?false:true;}publicintbalance(TreeNodenode){i......
  • 雪花算法生成分布式序列号
    packageio.binghe.seckill.infrastructure.utils.id;importjava.util.Date;publicclassSnowFlake{/***起始的时间戳:2023-04-1913:42:00,使用时此值不可修改*/privatefinalstaticlongSTART_STMP=1681882920782L;/***每一部分......
  • Jackson进行JSON序列化/反序列化添加Java 8的日期和时间库支持
     添加依赖包<!--Jackson进行JSON序列化/反序列化添加Java8的日期和时间库支持--> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.13.0</version> ......
  • C++序列点解析:确保代码行为可控的关键步骤
     概述:在C++中,序列点是表达式中确保求值顺序的点。其缺失可能导致未定义行为。基础功能示例演示了自增运算符的序列点,而高级功能示例展示了函数调用的序列点,有助于避免不确定行为。在编写代码时遵循序列点规则是确保程序行为可预测的关键。在C++中,序列点是在表达式中保证求值......
  • 代码随想录算法训练营第五十三天| ● 1143.最长公共子序列 ● 1035.不相交的线 ●
    最长公共子序列 题目链接:1143.最长公共子序列-力扣(LeetCode)思路:。classSolution{public:intlongestCommonSubsequence(stringtext1,stringtext2){vector<vector<int>>dp(text1.size()+1,vector<int>(text2.size()+1,0));for(inti......
  • lc1771 由子序列构造的最长回文串的长度
    给出两个字符串word1和word2,需要从word1和word2分别选出某个非空子序列s1和s2,要求连接s1与s2后得到回文串,求该回文串的最大长度。word1和word2长度在[1,1000]内。区间dp,将word1与word2拼接起来,转换成求单个字符串的的最长回文子序列问题,为了保证s1和s2非空,枚举word1和word2中每......
  • buu反序列化
    反序列化[MRCTF2020]Ezpop简单的pop查看源码用反序列化触发wakeup方法,preg_match将$this->source进行字符串正则匹配,$show1会被当成字符串进而触发tostringtostring是把对象当成字符串调用时被触发,$show=newShow();$show1=newShow();$show->source=$show1;get方法......
  • lc516 最长回文子序列
    给定长度为n的字符串s,求最长回文子序列的长度。1<=n<=1000区间dp,记dp[i][j]表示区间[i,j]能构成的最长回文串的长度,根据s[i]跟s[j]是否相等进行转移。classSolution{public:intdp[1005][1005];intlongestPalindromeSubseq(strings){intn=s.size()......
  • 代码随想录算法训练营第五十三天 | 53. 最大子序和 动态规划,1035.不相交的线,1143.最
    53.最大子数组和 已解答中等 相关标签相关企业 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。  示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]......
  • requests.post传的data如果是直接使用python dict封装,有些服务端接收不了这种数据类型
    平时在自己的php项目里,使用dict方式组装data,然后requests.post,一点问题都没有。但是调了后端一个java的微服务接口,结果就一直报错422: 最后问了一下开发,得到提示“python好像还有个毛病,python的json对象转字符串的时候,转出来的字符串不是标准json字符串,还要做个字符串处理,变成......