首页 > 其他分享 >115. 不同的子序列

115. 不同的子序列

时间:2023-06-06 16:56:04浏览次数:38  
标签:结尾 rabbbit 不同 个数 115 字符串 序列 dp

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

题目数据保证答案符合 32 位带符号整数范围。


示例 1:

输入:s = "rabbbit", t = "rabbit"
输出:3
解释:
如下所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。
rabbbit
rabbbit
rabbbit

> 动态规划

首先dp[i][j]表示 以j-1为结尾的字符串的子序列中以i-1为结尾的字符串出现的个数;
如果t[i-1] 不等于 s[j-1] 则个数为dp[i][j-1];
如果t[i-1] 等于 s[j-1] 则个数为
** 此时情况分为两种**
** 1. 以s[j-1] 为结尾的子序列,则匹配的个数为dp[i-1][j-1];**
** 2. 不以s[j-1]为结尾的子序列但是依然匹配的,则个数为dp[i][j-1];**


class Solution {
public:
    int numDistinct(string s, string t) {
        vector<vector<uint64_t>> dp(t.size()+1,vector<uint64_t>(s.size()+1,0));
        for(int i = 0;i <= s.size();i++)   
        {   
            dp[0][i] = 1;
        }
        for(int i = 1;i <= t.size();i++){
            for(int j = 1;j <= s.size();j++){
                if(t[i-1] == s[j-1]){
                    dp[i][j] = dp[i-1][j-1] + dp[i][j-1];
                }
                else{
                    dp[i][j] = dp[i][j-1];
                }
            }
        }
        return dp[t.size()][s.size()];
    }
};

标签:结尾,rabbbit,不同,个数,115,字符串,序列,dp
From: https://www.cnblogs.com/lihaoxiang/p/17461029.html

相关文章

  • 【汽车处理器】TMS5701115CPGEQQ1 Hercules™ TMS570 ARM® Cortex®-R
    TMS5701115CPGEQQ116/32位RISC闪存微控制器(MCU)是一个用于安全系统的高性能汽车级微控制器系列。其采用的安全架构包括锁步中的双CPU、CPU和内存内置自检(BIST)逻辑、闪存和数据SRAM上的ECC、外设存储器上的奇偶校验以及外设I/O上的回路功能。TMS570器件集成了可提供高效1.66......
  • KingbaseES V8R6 几种不同的表复制方式
    前言当数据库遇到未知问题,有时候无法入手分析,在非生产数据库或者征得客户同意获得特殊时间,需要重建表解决,下面提供了多种不同的复制表的方法,我们了解一下他们的差异。测试1、CREATETABLEASSELECT语句用于复制表结构和数据,但是不会复制索引。我们可以使用以下语句基于t1......
  • 392. 判断子序列
    给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的S,称作S1,S2,...,Sk其中k>=10亿,你需要依次检查它......
  • 引出问题:不同编码读取会出现乱码
         ......
  • 如何设计React应用程序的样式——比较不同的选项
    样式在创建具有视觉吸引力和用户友好的Web应用程序方面起着至关重要的作用。对于React应用程序,可以通过多种方式来设置组件和UI元素的样式。在本文中,我们将探讨几个流行的选项,包括纯CSS、CSS模块、CSS预处理器、TailwindCSS、CSS-in-JS库(如StyledComponents)以及预构......
  • 克隆和序列化应用(附面试题)
    克隆在开始学习克隆之前,我们先来看看下面的代码,普通的对象复制,存在什么问题?classCloneTest{publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{//等号赋值(基本类型)intnumber=6;intnumber2=number;//......
  • R语言ARMA-GARCH模型金融产品价格实证分析黄金价格时间序列
    全文链接:http://tecdat.cn/?p=32677原文出处:拓端数据部落公众号研究黄金价格的动态演变过程至关重要。文中以黄金交易市场下午定盘价格为基础,帮助客户利用时间序列的相关理论,建立了黄金价格的ARMA-GARCH模型,并对数据进行了实证分析,其结果非常接近。利用该模型可动态刻画黄金......
  • Kubernetes 的不同大版本之间有许多重大的区别
    Kubernetes的不同大版本之间有许多重大的区别。以下是一些主要的区别:v1.0-v1.6:这是Kubernetes最初的几个版本,这些版本相对较简单,并且缺乏一些现在已经成为核心特性的功能,例如StatefulSet和DaemonSet。v1.7-v1.12:这些版本引入了一些重要的新功能,例如StatefulSet、......
  • Java模拟表单提交编码不同导致乱码问题解决
    最近有个业务需要模拟表单提交到asp页面中,但是我的项目编码是UTF8,而asp页面是GB2312,中文字段提交后,到达数据库后是乱码.问题的解决在于模拟提交的时候指定编码:我用的HTTP框架是Unirest,代码如下:......
  • 674. 最长连续递增序列
    给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。连续递增的子序列可以由两个下标l和r(l<r)确定,如果对于每个l<=i<r,都有nums[i]<nums[i+1],那么子序列[nums[l],nums[l+1],...,nums[r-1],nums[r]]就是连续递增子序列。示例......