给定一个字符串 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)相关推荐

  1. LeetCode 115. 不同的子序列(动态规划)

    题目描述 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(例如,"ACE" 是 "ABCDE" 的一个子 ...

  2. 119. Leetcode 115. 不同的子序列 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]: 长度为i的s子串删除字符得到长度为j的t的子串的方法个数 步骤二.推断状态方程: 这种情况一般都会分字符相等和不相等的情况.如果当前的字 ...

  3. 【重点!DP】LeetCode 115. Distinct Subsequences

    LeetCode 115. Distinct Subsequences Solution1: 不会做.. 参考网址:https://www.youtube.com/watch?v=mPqqXh8XvW ...

  4. 53. 最大子数组和 392.判断子序列 115.不同的子序列

    53. 最大子数组和 dp[i]: 0-i-1,包含下标i-1的最大和为dp[i] 若dp[i-1]小于0,则和重新从nums[i]开始计算. 最后返回dp[i]最大值即可 392.判断子序列 i为短 ...

  5. LeetCode 85. 最大矩形(DP/单调递增栈,难)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调递增栈 1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [[" ...

  6. LeetCode 221. 最大正方形(DP)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 来源:力扣(LeetCode) 链接:https:/ ...

  7. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  8. Bailian2806 公共子序列【最长公共子序列+DP】

    2806:公共子序列 描述 我们称序列Z = < z1, z2, -, zk >是序列X = < x1, x2, -, xm >的子序列当且仅当存在 严格上升 的序列< ...

  9. NUC1776 Tiling Up Blocks【二维最长上升子序列+DP】

    Tiling Up Blocks 时间限制: 1000ms 内存限制: 10000KB 通过次数: 2总提交次数: 2 问题描述 Michael The Kid receives an interes ...

最新文章

  1. 表弟高考650多,程序员不建议学计算机,亲戚:你不希望别人好
  2. 【clickhouse】Port 9000 is for clickhouse-client program
  3. 连接池和 Timeout expired异常【转】
  4. db2v9/9.5高级应用开发_使用 Vue.js 2.0 开发单页应用
  5. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程
  6. oracle秒级查询,oracle 中查询超过10秒以上的sql语句(性能优化)
  7. C# richTextBox滚动到最后一行 显示最后一行 自动跳转最后一行
  8. 武汉理工大学计算机学院夏令营,武汉理工大学计算机科学与技术学院(专业学位)软件工程保研夏令营...
  9. 基于HTML仿华为手机网站电商项目的设计与实现
  10. 微软资深副总裁洪小文:人工智能十年预测(演讲全文、61PPT)
  11. 计算机网络期末实验考试题目+总结(用的是CISCO软件~~)
  12. HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
  13. 资深HR分享:常见面试技巧,都是套路!
  14. 色差仪如何控制油漆涂层色差
  15. httpd离线安装(含依赖包下载地址)
  16. STL容器之string
  17. 一个好用的在线画图工具 - 图表秀
  18. 还在为动态太大不能用发愁么?只需3步学会高效压缩GIF动图
  19. 视频中为什么需要这么多的颜色空间?
  20. Kotlin 教程(一):走进 Kotlin 的世界

热门文章

  1. 1050 螺旋矩阵 (25 分
  2. reverse函数:反转容器内容
  3. Java进阶之光!mysql安装包安装教程
  4. HTML如何添加锚点,总结到位
  5. PIE SDK主成分变换
  6. 字符串、指针、引用、数组基础
  7. Mysql(三) Mysq慢查询日志
  8. 三维空间两直线/线段最短距离、线段计算算法 【转】
  9. Mina、Netty、Twisted一起学(五):整合protobuf
  10. Lecture 20 Parallel Algorithms I