[LeetCode]Distinct Subsequences,解题报告

题目

Given a string S and a string T, count the number of distinct subsequences of T in S.

A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ACE" is a subsequence of "ABCDE" while "AEC" is not).

Here is an example:
S = "rabbbit", T = "rabbit"

Return 3.


思路1

開始非常easy想到深搜,通过flags数组做标记位。得到子串的个数

代码:

import java.util.Scanner;public class DistinctSubsequences {private static int disNum = 0;public static int numDistinct(String S, String T) {int[] flags = new int[S.length()];int num = 0;dfs(num, flags, 0, 0, S, T);return disNum;}public static void dfs(int num, int[] flags, int indexS, int indexT, String S, String T) {if (num == T.length()) {disNum++;} else {for (int i = indexS; i < S.length(); i ++) {                if (S.charAt(i) == T.charAt(indexT) && flags[i] == 0) {flags[i] = 1;num++;dfs(num, flags, i + 1, indexT + 1, S, T);flags[i] = 0;num--;}}}}public static void main(String[] args) {Scanner cin = new Scanner(System.in);while (cin.hasNext()) {String S = cin.nextLine();String T = cin.nextLine();disNum = 0;int res = numDistinct(S, T);System.out.println(res);}cin.close();}
}

可是在大集合的时候 Time Limit Exceeded



思路2

既然简单的深搜超时,仅仅能考虑略微复杂一点的DP了。

能够參考动态规划经典的样例。最长公共子序列。


这里我採用二维数组int[][] dp来记录匹配子序列的个数,则状态方程为:

dp[0][0] = 1, T和S均为空串
dp[0][1..S.length() - 1] = 1, T为空串,S仅仅有一种子序列匹配
dp[1..T.length() - 1][0] = 0, S为空串
dp[i][j] = dp[i][j - 1] + (T[i - 1] == S[j - 1] ? dp[i - 1][j - 1] : 0)

代码:

public class Solution {public static int numDistinct(String S, String T) {if (S == null || S.length() == 0) {return 0;}int[][] dp = new int[T.length() + 1][S.length() + 1];dp[0][0] = 1;for (int i = 1; i <= S.length(); i++) {dp[0][i] = 1;}for (int i = 1; i <= T.length(); i++) {dp[i][0] = 0;}for (int i = 1; i <= T.length(); i++) {for (int j = 1; j <= S.length(); j++) {if (T.charAt(i - 1) == S.charAt(j - 1)) {dp[i][j] = dp[i][j - 1] + dp[i - 1][j - 1];} else {dp[i][j] = dp[i][j - 1];}}}return dp[T.length()][S.length()];}}


转载于:https://www.cnblogs.com/yangykaifa/p/6903810.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021年河南高考成绩排名查询一分一段表,2018河南高考一分一段统计表,查排名必备!...

原标题&#xff1a;2018河南高考一分一段统计表&#xff0c;查排名必备&#xff01;&#xff1a;点击这里信息省招办公布了2018年普通高招分数段统计表&#xff0c;对每个分数段有多少考生进行了详细统计。你考了多少分&#xff1f;处在哪个位置&#xff1f;快来看看&#xff0…

实用的css样式

当字数超过一行时&#xff0c;可以用...代替 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 这三个样式同时使用才有效&#xff0c;也可以去掉white-space样式&#xff0c;分两行 转载于:https://www.cnblogs.com/maggie-php/p/6906462.html

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成

FuseDream: Training-Free Text-to-Image Generation with Improved CLIPGAN Space Optimization 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. CLIPGAN 文本到图…

中文邮件营销html模版,怎么制作邮件营销模板?— —邮件格式

怎么制作邮件营销模板&#xff1f;— —邮件格式U-Mail邮件营销平台发表时间 2017-09-21人气 757次做EDM邮件营销&#xff0c;需要有好的邮件群发工具&#xff0c;还要有好的内容&#xff0c;那么如何制作好邮件营销的模板呢&#xff1f;现在U-Mail邮件群发平台根据已有的一些经…

angularJS中,怎么阻止事件冒泡

今天有个童鞋问我&#xff0c;ng怎么阻止事件冒泡&#xff0c;我就简单的贴一下代码吧&#xff0c;也不是什么好高大上的问题 转载于:https://www.cnblogs.com/leoshuaige/p/6910646.html

用计算机画好看的图形,如何画一手漂亮的电脑效果图?技巧案例赏析!

原标题&#xff1a;如何画一手漂亮的电脑效果图&#xff1f;技巧&案例赏析&#xff01;电脑效果图是什么&#xff1f;很显然&#xff0c;用电脑去绘制设计师的想法。当然&#xff01;所有的设计意图&#xff0c;最终都是为了更准确的成衣。那么&#xff0c;能精准的表达出想…

适合文科女孩子学的计算机类专业,文科女生最吃香的专业2021 哪些专业有前景...

文科女生最吃香的专业2021 哪些专业有前景2021-03-27 14:36:27文/丁雪竹文科女生可以报考的专业并不是很多&#xff0c;小编整理了文科女生吃香的专业&#xff0c;来看一下&#xff01;文科女生最吃香的专业网络与新媒体这个专业是近几年流行起来的新兴专业&#xff0c;需求量还…

Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)

不多说&#xff0c;直接上干货&#xff01; 在这篇博客里&#xff0c;我采用了非官网的安装步骤&#xff0c;来进行安装。走了弯路&#xff0c;同时&#xff0c;也是不建议。因为在大数据领域和实际生产里&#xff0c;还是要走正规的为好。 Ubuntu16.04下Mongodb&#xff08;离…

uva 11971 Polygon

https://vjudge.net/problem/UVA-11971 有一根长度为n的木条&#xff0c;随机选k个位置把它们切成k1段小木条。求这些小木条能组成一个多边形的概率。 将木条看做一个圆&#xff0c;线上切k刀等价于圆上切k1刀 如果能组成多边形&#xff0c;每一段木条的长度都要<圆周长/2 反…

Charles - 接口抓包分析工具

Charles是一个HTTP代理服务器&#xff0c;反转代理服务器&#xff0c;HTTP监视器。它允许一个开发者查看所有连接互联网的HTTP通信&#xff0c;包括request、 response现HTTP headers &#xff08;包含cookies与caching信息&#xff09;。 下载&#xff1a; http://www.charle…

表现与数据分离;前台MVC

无意间看到一个web前端招聘要求&#xff1a;表现与数据分离 这名词对我非常陌生&#xff0c;我就去百度了下 由于有各种莫名其妙的需求&#xff0c;所以才会出现我们前端MVC这样的莫名其妙的东西。。。我们的html就是model&#xff0c;我们的css就是view。我们的js就是controll…

使用EFI引导从硬盘(U盘)安装Win7的图文教程

眼下仅支持vista后的64位系统大部分使用EFI引导安装Win7的教程都是採用光盘启动安装&#xff0c;尽管光盘安装比較简单&#xff0c;可是对于没有光驱的朋友来说还是相当不便&#xff0c;更不用说光盘安装的两大缺点了&#xff0c;一速度慢&#xff0c;二不灵活。因此本篇教程将…

计算机语言中str是什么意思,vb中str什么意思

vb中str什么意思&#xff1f;str是VB的一种函数&#xff0c;可以将数字型变量或常量转换成字符型变量或常量。str函数的功能是返回代表一数值的Variant (String)。当一数字转成字符串时&#xff0c;总会在前头保留一空位来表示正负。如果 number 为正&#xff0c;返回的字符串包…

计算机中函数counta表示,excel中counta函数的使用方法

你还在为Excel中counta函数的使用方法而苦恼吗&#xff0c;今天小编教你Excel中counta函数的使用方法&#xff0c;今天&#xff0c;学习啦小编就教大家在counta函数的使用方法。Excel的counta函数的使用方法如下&#xff1a;主要从四方面对Excel函数进行讲解&#xff0c;1.函数…

天正计算机命令大全,天正CAD 中按Ctrl+v在不同图中粘贴出现“未知命令T81_tpasteclip”,直接在CAD中就能操作...

天正CAD 中按Ctrlv在不同图中粘贴出现“未知命令T81_tpasteclip”&#xff0c;直接在CAD中就能操作以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;天正CAD 中按Ctrlv在不同图中粘贴出现“未…

挺好用的Markdown写法

最近喜欢用有道云写东西&#xff0c;挺爽的&#xff0c;同时也支持markdown写法&#xff0c;大家可以去试试 最近markdown很火&#xff0c;因为写文档之类很简洁很漂亮好排版&#xff0c;可以了解一下 例如github上就用这个&#xff0c; 例如这个就是用markdown写出来的介绍&am…

ffmpeg在android上输出滑屏问题处理

ffmpeg部分机器上有花屏的问题 原代码例如以下: while(av_read_frame(formatCtx, &packet)>0 && !_stop && NULL!window && bInit) {// Is this a packet from the video stream?if(packet.stream_indexvideoStream) {// Decode video frameav…

ff14拆区后哪个服务器人最多,FF14拆区可以转服吗 拆区期间转服教程

FF14拆区可以转服吗?随着FF14拆区改动的来临&#xff0c;很多玩家开始迷惘&#xff0c;毕竟自从开了跨服以后&#xff0c;跟同区不同服的亲友一起游戏的机会大大增加了。现在随着拆区改动&#xff0c;不少玩家还不知道能不能继续跟亲友玩耍&#xff0c;想知道拆区可以转服吗&a…

索引快速查询

一、索引 索引是表的目录&#xff0c;在查找内容之前可以先在目录中查找索引位置&#xff0c;以此快速定位查询数据。对于索引&#xff0c;会保存在额外的文件中。 名词&#xff1a; 覆盖索引&#xff1a; - 在索引文件中直接获取数据 索引合并&#xff1a; …

服务器红帽操作系统安装,怎么安装red hat操作系统

红帽在2014年6月发布了最新旗舰版企业操作系统——红帽企业Linux 7。基于红帽企业Linux 7操作系统&#xff0c;企业可整合裸机服务器、 虚拟机、基础设施即服务(IaaS)和平台即服务(PaaS)&#xff0c;以构建一个强大稳健的数据中心环境&#xff0c;满足不断变化的业务需求。学习…