leetcode115. 不同的子序列
一:题目
二:代码
class Solution {public:/**思路:动规分析走一波1>:确定dp数组以及下标的含义dp[i][j] 表示的是 以下标i-1结尾的子序列s中出现以j-1结尾的子序列t的 个数2>:确定dp数组的状态递推公式这里考虑两种状况 一种就是 s[i-1] == s[j-1] 一种就是字符串不相等;当字符串相等的时候也有两种情况一种是算上 s[i-1]字符进行匹配 即 dp[i][j] = dp[i-1][j-1];//这里我们是前面s中包含t的个数一种是不算上 s[i-1]字符进行匹配 即 dp[i][j] = dp[i-1][j];//这个就是不包含s[i-1]字符那么我们总的个数 dp[i][j] = dp[i-1][j-1] + dp[i-1][j];bagg 和bag s[i-1] = s[3] = g;那么我们计算个数的时候 一种就是 不算上s[3] 一种就是算上是s[3]但是无论哪种 我们都需要注意的是 我们最终dp[i][j]统计的是s包含t的个数所以 dp[i][j] = dp[i-1][j-1] + dp[i-1][j];当字符串不相等的时候 也就是不用匹配s[i-1] 那就匹配s[i-1]之前的字符也就是 dp[i][j] = dp[i-1][j];3>:确定dp数组的初始化当s字符串和空字符串进行匹配的时候;我们便可以得出 dp[i][0] = 1;因为不论i为何值 反正其肯定会包含空字符串;4>:确定dp数组的遍历顺序这里外层循环是s内层循环是t5>:举例验证s = "babgbag" t = "bag"b a g1 0 0 0b 1 1 0 0a 1 1 1 0 b 1 2 1 0g 1 2 1 1 b 1 3 1 1a 1 3 4 1g 1 3 4 5**/int numDistinct(string s, string t) {//uint:取值范围是 2^31 - 1,即:0~4294967295。这里表示的范围不同 如果用int 会报错 vector<vector<uint64_t> > dp(s.size()+1,vector<uint64_t>(t.size()+1,0));for (int i = 0; i <= s.size(); i++) dp[i][0] = 1;for (int i = 1; i <= s.size(); i++) {for (int j = 1; j <= t.size(); j++) {if (s[i-1] == t[j-1]) dp[i][j] = dp[i-1][j-1] + dp[i-1][j];//dp[i][j]//=算上s[i-1]字符+不算s[i-1]字符else dp[i][j] = dp[i-1][j];//}}return dp[s.size()][t.size()];}
};
这种一做就两个钟的题啥时候是个头呀 动态规划把我整异域了
leetcode115. 不同的子序列相关推荐
- leetcode115 不同的子序列
给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(例如," ...
- 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)
3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...
- LeetCode算法题整理(200题左右)
目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...
- leetcode解题总览
3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...
- 【代码随想录】-动态规划专题
文章目录 理论基础 斐波拉契数列 爬楼梯 使用最小花费爬楼梯 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 背包问题--理论基础 01背包 二维dp数组01背包 一维数组(滚动数组) 装满背包 ...
- Leetcode动态规划专题(共38道)
某一问题有很多重叠子问题 每一状态一定由上一状态推导出来 而贪心没有状态推导,而是直接选局部最优 解决方式: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历 ...
- 【精品计划1】动态规划入门到熟悉,看不懂来打我啊
持续更新...... 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳 ...
- 动态规划入门到熟悉,看不懂来打我啊
动态规划入门到熟悉,看不懂来打我啊 兔子hebtu666 本文链接:https://blog.csdn.net/hebtu666/article/details/100585136 2.1斐波那契系列 ...
- LeetCode简单题之最长和谐子序列
题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度. 数组的子序列是一个由数组派生出来的 ...
最新文章
- flexbox布局的兼容性
- MFC中的MainFrame Dlg,App,Doc,View的关系
- 初学python还是swift-Python并不完美,Swift正在成长为深度学习语言 !
- T-SQL Recipes之Customized Database Objects
- python 批量修改密码
- Linux命令大总结(早期学习时的笔记)
- scrapyd部署_第八章 第一节 scrapyd和scrapy-client
- linux客户端 存活检测,Linux下客户端检测服务器的 heartbeat
- loss函数之TripletMarginLoss与TripletMarginWithDistanceLoss
- 7、sudo权限问题考察一题(考试题答案系列)
- 访问艺术馆(codevs 1163)树形DP
- Ubuntu如何修改用户密码
- opencv之图像二值化处理
- AcWing 723. PUM
- 区块链为什么叫区块链
- 《Modelica教程》by Fritzson 导言部分
- JeecgBoot 3.2.0 版本发布,基于代码生成器的企业级低代码平台
- excel计算式自动计算_计算macd 分解步骤一步一步详细计算macd 用excel计算macd
- windows10升级windows11后微信等软件无法连接网络
- GT性能测试Android版使用说明
热门文章
- 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
- 【ArcGIS微课1000例】0005:空间连接(Spatial Join)
- 【ArcGIS风暴】ArcGIS生成GlobeLand30土地利用数据集中国区域行列号shp格式对照图(附shp下载)
- 【MATLAB统计分析与应用100例】案例007:matlab数据的极差归一化变换
- C语言试题四十三之求出ss所指字符串中指定字符的个数,并返回此值。
- Android之Debug运行项目一直卡在Debug界面(can‘t bind to local 8066 for debug)
- Android之运行的错误:java.lang.UnsatisfiedLinkError: Couldn‘t find cibloger.so
- Android之用Intent.FLAG_ACTIVITY_CLEAR_TOP解决界面重复拉起问题
- jmeter对乱码如何处理_JMeter读取 Excel 表中用例数据实现接口压测
- 【COMA】一种将团队回报拆分为独立回报的多智能体算法