当前位置: 首页 > news >正文

动态规划---不同的子序列

题目:给你两个字符串 s t ,统计并返回在 s子序列t 出现的个数。

例如,s='rabbbit',t='rabbit',结果为3(rabbbit,rabbbit,rabbbit

思路:

1.确定dp数组及含义

dp[i][j]代表以下标i-1结尾的s子序列中出现以下标j-1结尾的字符串t的个数

2.确定递推公式

如果s[i-1]=t[j-1],那么可以用s[i-1]匹配,个数为dp[i-1][j-1];可以不用s[i-1]来匹配,个数为dp[i-1][j]

如果s[i-1]!=t[j-1],那么个数为dp[i-1][j]

3.初始化dp数组

根据递推公式,我们需要初始化dp[i][0],含义是以下标i-1结尾的s子序列随便删除元素出现空字符串的个数,即个数为1(全删),初始化dp[0][j],含义是空字符串s随便删除元素出现字符串t的个数,即个数为0

4.确定遍历顺序

从小到大,从左到右遍历

代码:

    public int numDistinct(String s, String t) {int len1=s.length();int len2=t.length();int[][] dp=new int[len1+1][len2+1];for(int i=0;i<len1;i++){dp[i][0]=1;}for(int i=1;i<=len1;i++){char c1=s.charAt(i-1);for(int j=1;j<=len2;j++){char c2=t.charAt(j-1);if(c1==c2)  dp[i][j]=dp[i-1][j-1]+dp[i-1][j];else dp[i][j]=dp[i-1][j];}}return dp[len1][len2];}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一次RPC调用过程是怎么样的?
  • NLP与文本生成:使用GPT模型构建自动写作系统
  • 软件无线电2:矢量信号器和HackRF实现FM调制解调
  • 32.递归、搜索、回溯之floodfill算法
  • com.microsoft.sqlserver:sqljdbc4:jar:4.0 was not found产生原因及解决步骤
  • Zabbix的安装与基本使用(主机群组、应用集、监控项、触发器、动作、媒介)
  • C++设计模式(更新中)
  • Linux 常用指令
  • 苹果Vision Pro曝出严重漏洞,黑客可通过用户眼动输入窃取信息
  • vue之我不会
  • Pytest配置文件pytest.ini如何编写生成日志文件?
  • (PySpark)RDD实验实战——取最大数出现的次数
  • Python 入门教程(3)基础知识 | 3.2、缩进规则
  • 【图像匹配】基于Harris算法的图像匹配,matlab实现
  • 探索LangChain的JSON加载器:轻松处理JSON和JSONL数据
  • 【Leetcode】104. 二叉树的最大深度
  • Github访问慢解决办法
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaWeb(学习笔记二)
  • Node项目之评分系统(二)- 数据库设计
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React-Native - 收藏集 - 掘金
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 从输入URL到页面加载发生了什么
  • 用简单代码看卷积组块发展
  • 大数据全解:定义、价值及挑战
  • 积累各种好的链接
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​MySQL主从复制一致性检测
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • %check_box% in rails :coditions={:has_many , :through}
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4)logging(日志模块)
  • (MATLAB)第五章-矩阵运算
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (第27天)Oracle 数据泵转换分区表
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (十六)视图变换 正交投影 透视投影
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net连接MySQL的方法
  • .NET命名规范和开发约定
  • .Net中ListT 泛型转成DataTable、DataSet
  • .Net中间语言BeforeFieldInit
  • @WebServiceClient注解,wsdlLocation 可配置
  • @基于大模型的旅游路线推荐方案
  • [ JavaScript ] JSON方法
  • [\u4e00-\u9fa5] //匹配中文字符