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

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

1. 判断子序列

392. 判断子序列 - 力扣(LeetCode)

dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度。

class Solution {public boolean isSubsequence(String s, String t) {//dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。int ls = s.length();int lt = t.length();int[][] dp = new int[ls + 1][lt + 1];for(int i = 1; i <= ls; i++){for(int j = 1; j <= lt; j++){if(s.charAt(i-1) == t.charAt(j-1))dp[i][j] = dp[i-1][j-1] + 1;elsedp[i][j] = dp[i][j-1];}}return dp[ls][lt] == ls? true: false;}
}

2. 不同的子序列

115. 不同的子序列 - 力扣(LeetCode)

dp[i][j]:s中[0: i-1] 出现 t中 [0: j-1] 个数。(i j 为0 可以理解为空字符串)

可以理解为 字符串 s[i-1] 删除元素 能否变成 t[j-1] 

如果当前位置上的两个元素相等了 bagg ba

那么这个位置的个数等于 bagg ba bagg bag

if(s.charAt(i-1) == t.charAt(j-1))

                    dp[i][j] = dp[i-1][j-1] + dp[i-1][j]; (包含当前组成情况 + 不包含当前组成情况)

既然s[i-1]可以组成 t[j-1],那么还要看s不包含(i-1)的情况(前面可能已经组成了,得加上)

如果当前位置上的两个元素不相等 bagg ba

不相等了,就看s[i]的字串s[i - 1] 的组成个数

class Solution {public int numDistinct(String s, String t) {// dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。int ls = s.length();int lt = t.length();int[][] dp = new int[ls+1][lt+1];for (int i = 0; i < ls + 1; i++) {dp[i][0] = 1; // s[0-1:i-1] 可以构成 t[0-1](空字符串)}for(int i = 1; i <= ls; i++){for(int j = 1; j <= lt; j++){if(s.charAt(i-1) == t.charAt(j-1))dp[i][j] = dp[i-1][j-1] + dp[i-1][j];// 包括s当前元素 + 不包括s当前元素elsedp[i][j] = dp[i-1][j];}}return dp[ls][lt];}
}

 

http://www.lryc.cn/news/181772.html

相关文章:

  • Kafka日志索引详解以及生产常见问题分析与总结
  • vue中 css scoped原理
  • tf.compat.v1.global_variables()
  • 登录注册实现
  • Push rejected: Push to origin/master was rejected
  • 在线OJ项目核心思路
  • Spring MVC:数据绑定
  • STM32CubeMX学习笔记-USB接口使用(HID按键)
  • C#,数值计算——Ranq2的计算方法与源程序
  • C/C++ 数据结构 - 链表
  • 【算法基础】一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、希尔排序和堆排序
  • javascript二维数组(3):指定数组元素的特定属性进行搜索
  • 使用Qt进行HTTP通信的方法
  • 第45节——页面中修改redux里的数据
  • 软考 系统架构设计师系列知识点之软件架构风格(2)
  • 【C++11】Lambda 表达式:基本使用 和 底层原理
  • 【网络安全---ICMP报文分析】Wireshark教程----Wireshark 分析ICMP报文数据试验
  • 【Docker】Docker的应用包含Sandbox、PaaS、Open Solution以及IT运维概念的详细讲解
  • Java Applet基础
  • 【记录】IDA|IDA怎么查看当前二进制文件自动分析出来的内存分布情况(内存范围和读写性)
  • LIMS实验室信息管理系统源码 基于计算机的数据处理技术、数据存储技术、网络传输技术、自动化仪器分析技术于一体
  • 有效括号相关
  • 浅谈泛型擦除
  • nodejs+vue校园跑腿系统elementui
  • Redis Cluster Cron调度
  • Redis Cluster Gossip Protocol: Message
  • 【JVM】第四篇 垃圾收集器ParNewCMS底层三色标记算法详解
  • STM32复习笔记(四):独立看门狗IWDG
  • SpringBoot中常用注解的含义
  • 学位论文的写作方法,较好的参考文章