LeetCode115不同的子序列
题目说明在这里就不贴出来了,相信打开这篇文章的小伙伴们肯定都是在刷LeetCode的。
一开始我的想法是dfs+回溯,结果运行超时,一开始我就觉得可能会超时,结果不出所料【手动笑哭】。
后来我想了下dfs在每一次都需要遍历,这样时间复杂度当然高啊。
后来经过了不知道多久的好久,我就学会了使用动态规划的方法,哎,动态规划一直是我的弱点所在,逻辑思维能力跟不上!
动态规划的重点在于找到状态转换方程,说是这样说的,但是我每次都找不到转换方程啊。。。。哈哈哈哈,无奈大笑!
废话不多,直接上图,一图胜千言!

解释上图:各位小伙伴可以发现蓝色一行全为1,啥意思尼?因为我们设置dp[t.length+1][s.length+1],多一行
和多一列的目的是我们需要dp【0】【0】的那个初始值1,因为当 s 为空 t 为空时匹配情况为1,然后当 t 为空随
着 s 不断变长其匹配数仍为1。黄色一列同理可得当 s 为空 t 不空时没有可以匹配的。
然后我们通过观察可以猜出
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】
else后面的很好理解,例如当 t 取前面一个字符 “r” 然后依次从前往后去s中找匹配,当 s = “r”时匹配为1, 当 s = “ra”
时匹配仍为1,依次类推。
然而,if后面的那个表达式又是什么意思呢?

如图,这个例子可以很好的解释,现在要求最后一个方框中的值,dp【i】【j】 = dp【i-1】【j-1】+ dp【i】【j-1】
在这里的解释就是:在a之前b的个数,有多少个b就可以与a组成多少对匹配,
然后加上当s = “ba” s = “babagc” 时,能够匹配的ba的数量
LeetCode115不同的子序列的更多相关文章
- [Swift]LeetCode115. 不同的子序列 | Distinct Subsequences
Given a string S and a string T, count the number of distinct subsequences of S which equals T. A su ...
- 【1】【leetcode-115】 不同的子序列 distinct-subsequences
不同的子序列 distinct-subsequences(hard) (忘了,典型) 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删 ...
- 【1】【leetcode-115 动态规划】 不同的子序列
给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(例如," ...
- 用python实现最长公共子序列算法(找到所有最长公共子串)
软件安全的一个小实验,正好复习一下LCS的写法. 实现LCS的算法和算法导论上的方式基本一致,都是先建好两个表,一个存储在(i,j)处当前最长公共子序列长度,另一个存储在(i,j)处的回溯方向. 相对 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- [LeetCode] Arithmetic Slices II - Subsequence 算数切片之二 - 子序列
A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff ...
- [LeetCode] Is Subsequence 是子序列
Given a string s and a string t, check if s is subsequence of t. You may assume that there is only l ...
- [LeetCode] Wiggle Subsequence 摆动子序列
A sequence of numbers is called a wiggle sequence if the differences between successive numbers stri ...
- [LeetCode] Increasing Triplet Subsequence 递增的三元子序列
Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the ar ...
随机推荐
- jQuery 解析 url 参数
应用场景: 三毛:我现在拿到一个 url 地址(https://www.google.com/search?dcr=&ei=5C&q=param),我现在要获取 location.se ...
- Java类什么情况下被初始化?
1.创建类的实例(new 的方式).访问某个类或接口的静态变量,或者对该静态变量赋值,调用类的静态方法 2.反射的方式 3.当初始化一个类的时候,如果发现其父类还没有进行初始化,则需先触发其父类的初始 ...
- H5 video自定义视频控件
1.自定义效果截图 2.效果源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- 【iOS】沙盒目录
有关沙盒目录参考: http://blog.csdn.net/totogo2010/article/details/7669837 获取沙盒路径,参考代码: NSArray *paths = NSSe ...
- 【Java】字符串空格相关
1. 去掉首尾空格 [trim() 方法] String.trim() //去掉首尾空格 2. 替换多个空格为一个 [replaceAll() 方法] str.replaceAll(" + ...
- 抓取崩溃的log日志
1.下载adb工具包 也就是解锁软件,如果要解锁的话,需确认有fastboot 安装jdk.sdk 2.注意事项 请确保电脑上只连接了一台手机设备(最好只连接一条USB线),同时确保手机已开启USB调 ...
- 后端开发实践系列之二——领域驱动设计(DDD)编码实践
Martin Fowler在<企业应用架构模式>一书中写道: I found this(business logic) a curious term because there are f ...
- Where is the clone one and how to extract it?
One cannot be in two places at once. Do you know what's "Dual Apps"? Manufactures like Xia ...
- 向.Net/Unity 程序员推荐一个十分因吹斯听的网站:sharplab.io
0x00 前言 & 过程 & 结论 今天发现了一个十分有趣的网站: https://sharplab.io/ 网站的页面并不复杂,功能大体上能够在题图中得到概括.发现它的过程也很偶然, ...
- WebSocket的实现与应用
WebSocket的实现与应用 前言 说到websocket,就不得不提http协议的连接特点特点与交互模型. 首先,http协议的特点是无状态连接.即http的前一次连接与后一次连接是相互独立的. ...