leetcode 115. 不同的子序列(dp)
给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。
字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)
题目数据保证答案符合 32 位带符号整数范围。
示例 1:
输入:s = “rabbbit”, t = “rabbit”
输出:3
解释:
如下图所示, 有 3 种可以从 s 中得到 “rabbit” 的方案。
(上箭头符号 ^ 表示选取的字母)
rabbbit
^^^^ ^^
rabbbit
^^ ^^^^
rabbbit
^^^ ^^^
解题思路
状态转移方程
dp[i][m1]= s.charAt(i)==t.charAt(m1)?dp[i+1][m1+1]+dp[i+1][m1]:dp[i+1][m1];
dp[i][m1]代表s[i…]和t[m1…]情况下,子序列的个数
初始化 当m1=m时代表字符串t为空串,任何s的子串都能匹配 ,所以dp[i][m]=1;
代码
public int numDistinct(String s, String t) {int n=s.length(),m=t.length();if(n<m) return 0;int[][] dp = new int[n+1][m+1];for (int i = n-1; i >= 0; i--) dp[i][m]=1;for (int i = n-1; i >=0; i--) for (int m1 = m-1; m1 >=0; m1--) dp[i][m1]= s.charAt(i)==t.charAt(m1)?dp[i+1][m1+1]+dp[i+1][m1]:dp[i+1][m1];return dp[0][0];}
leetcode 115. 不同的子序列(dp)相关推荐
- LeetCode 115. 不同的子序列(动态规划)
题目描述 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(例如,"ACE" 是 "ABCDE" 的一个子 ...
- 119. Leetcode 115. 不同的子序列 (动态规划-子序列问题)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]: 长度为i的s子串删除字符得到长度为j的t的子串的方法个数 步骤二.推断状态方程: 这种情况一般都会分字符相等和不相等的情况.如果当前的字 ...
- 【重点!DP】LeetCode 115. Distinct Subsequences
LeetCode 115. Distinct Subsequences Solution1: 不会做.. 参考网址:https://www.youtube.com/watch?v=mPqqXh8XvW ...
- 53. 最大子数组和 392.判断子序列 115.不同的子序列
53. 最大子数组和 dp[i]: 0-i-1,包含下标i-1的最大和为dp[i] 若dp[i-1]小于0,则和重新从nums[i]开始计算. 最后返回dp[i]最大值即可 392.判断子序列 i为短 ...
- LeetCode 85. 最大矩形(DP/单调递增栈,难)
文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调递增栈 1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [[" ...
- LeetCode 221. 最大正方形(DP)
文章目录 1. 题目信息 2. 解题 1. 题目信息 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 来源:力扣(LeetCode) 链接:https:/ ...
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- Bailian2806 公共子序列【最长公共子序列+DP】
2806:公共子序列 描述 我们称序列Z = < z1, z2, -, zk >是序列X = < x1, x2, -, xm >的子序列当且仅当存在 严格上升 的序列< ...
- NUC1776 Tiling Up Blocks【二维最长上升子序列+DP】
Tiling Up Blocks 时间限制: 1000ms 内存限制: 10000KB 通过次数: 2总提交次数: 2 问题描述 Michael The Kid receives an interes ...
最新文章
- 表弟高考650多,程序员不建议学计算机,亲戚:你不希望别人好
- 【clickhouse】Port 9000 is for clickhouse-client program
- 连接池和 Timeout expired异常【转】
- db2v9/9.5高级应用开发_使用 Vue.js 2.0 开发单页应用
- [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程
- oracle秒级查询,oracle 中查询超过10秒以上的sql语句(性能优化)
- C# richTextBox滚动到最后一行 显示最后一行 自动跳转最后一行
- 武汉理工大学计算机学院夏令营,武汉理工大学计算机科学与技术学院(专业学位)软件工程保研夏令营...
- 基于HTML仿华为手机网站电商项目的设计与实现
- 微软资深副总裁洪小文:人工智能十年预测(演讲全文、61PPT)
- 计算机网络期末实验考试题目+总结(用的是CISCO软件~~)
- HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
- 资深HR分享:常见面试技巧,都是套路!
- 色差仪如何控制油漆涂层色差
- httpd离线安装(含依赖包下载地址)
- STL容器之string
- 一个好用的在线画图工具 - 图表秀
- 还在为动态太大不能用发愁么?只需3步学会高效压缩GIF动图
- 视频中为什么需要这么多的颜色空间?
- Kotlin 教程(一):走进 Kotlin 的世界