给定两个字符串S和T,返回S子序列等于T的不同子序列个数有多少个? 如果得到子序列A删除的位置与得到子序列B删除的位置不同,那么认为A和B就是不同的。
admin
2024-02-27 07:46:05
0

问题描述:

        给定两个字符串S和T,返回S子序列等于T的不同子序列个数有多少个? 如果得到子序列A删除的位置与得到子序列B删除的位置不同,那么认为A和B就是不同的。
【例子】
S = "rabbbit", T = "rabbit"
返回: 3
        是以下三个S的不同子序列,没有^的位置表示删除的位置,因为删除的位置不同,所以这三 个子序列是不一样的
        rabbbit
        I I I I II
        rabbbit
        I I I I II
        rabbbit
        I I I I II

思想:

        看到题目题目中有两个字符串,讨论字符串之间的某种关系时,我们首先想到的是建立一张二维数组。

        建立二维数组dp[i][j],其含义是字符串S的0~i的子数组上随便删除得到的子序列与字符串T的0~j的子数组相同的方法数。

        二维数组第一行dp[0][j] 表示的含义是:字符串S第一个字符随便删除,变为字符串T的0~j的字符的方法数。我们知道只有第一个位置如果相等有一种方法,其他位置方法数为0。

        二维数组第一列dp[i][0] 表示的含义是:字符串S的0~i位置字符随便删除得到字符串T的第一个字符。dp[0][0]如果字符串T的第一个字符与字符串T的第一个字符相同则为1,不同则为0。字符串S的i位置字符与字符串S的第一个字符相同,则dp[i-1][0]+1,否则为dp[i-1][0]。

        对于二维数组的普遍位置dp[i][j]分为两种情况:

        1> 字符串S的第i个字符是处于删除状态时,dp[i][j] = dp[i-1][j] 。

        2> 字符串S的第i个字符是处于保留状态时,也就是S[i] = T[j],dp[i][j] = dp[i-1][j-1]

代码:

    public static int  maxSubSeqNum(String s,String t){if((s == null && t == null) || ("".equals(s) && "".equals(t))){return 1;}if((s == null && t != null) || s.length() < t.length()){return 0;}char[] sA = s.toCharArray();char[] tA = t.toCharArray();int[][] dp = new int[s.length()][t.length()];dp[0][0] = sA[0] == tA[0] ? 1 : 0;// dp[0][j] 其他不用填默认0// 列for (int i = 1; i < sA.length; i++) {dp[i][0] = sA[i] == tA[0] ?  dp[i-1][0] + 1 : dp[i-1][0];}for (int i = 1; i < sA.length; i++) {for (int j = 1; j < tA.length; j++) {dp[i][j] = dp[i-1][j] + (sA[i] == tA[j] ? dp[i-1][j-1] : 0);}}return dp[sA.length-1][tA.length-1];}public static void main(String[] args) {String s = "abcvcabc";String t = "abc";System.out.println(maxSubSeqNum(s,t));}

相关内容

热门资讯

风味觉醒时代,柳林酒业以“酒海... 文 | 蒋冰雁 伴随着消费需求的多元化,白酒风味的个性化也愈发重要,酒业消费逐步进入到品文化、品价值...
感受特色啤酒节 7月22日晚,第35届青岛国际啤酒节开老城区会场(大鲍岛),不少市民在体验“加油站”式打啤酒,一旁还...
坐南京-巴黎航线都能吃上什么美... 飞机上也能尽享美食!7月22日,中国东方航空江苏有限公司机上餐食品鉴会,重点展示了近期开通的南京-巴...
这些不到20万的车,都堪比露营... 随着露营热潮的持续升温,一辆既能满足城市通勤又能胜任户外探险的全能座驾成为刚需。20万级市场中,新能...
鲜花、云海、草甸 四川米易“云... 封面新闻记者 冷宇近段时间,四川攀枝花米易县的马鹿寨有点“火”。夏日炎炎,马鹿寨的高山草甸一片绿意,...
白酒与音乐浪漫邂逅,国台与郎朗... 好的音乐有直抵人心的力量,它能够跨越时间周期,打破心灵,让平凡的时刻变得动人难忘。 7月20日,大连...
白酒中有沉淀物,是品质”报警“... 古人饮酒讲究 “观色、闻香、品味”,《酒谱》中便有 “酒有沉渣,香不减而味愈醇” 的记载。 倒酒时,...
原创 0... 最近,外卖江湖可谓是风云变幻,一场激烈的 “大战” 让消费者们狠狠地过了一把 “薅羊毛” 的瘾。 上...
“中原豆腐第一宴”在中和豫宴圆... 7月21日,豆状元、中和豫宴与联合利华饮食策划联合举办“状元豆香,豫宴健康”豫菜品鉴宴,将豆腐这一沉...
原创 入... 老话说得透亮:“入伏不补,秋冬受苦”。为啥?这酷暑就像个“抽水机”,大汗淋漓间,不知不觉就把咱们体内...
找回“稳稳的幸福”:特发性震颤... 您是否因不自主的颤抖而感到困扰?那些不请自来的“手抖”,不仅影响着日常生活,更可能带来心理上的压力与...
赵立坚为青岛国际啤酒节打cal... “与世界干杯,你会来吗?” 近日,赵立坚连发多条微博 为青岛国际啤酒节打call! 盛夏畅爽,啤...
原创 我... 夏天大家都喜欢吃各种的凉拌菜,在我们家素菜凉拌比荤菜凉拌更加受欢迎,尤其是凉拌茄子,是全家都喜欢吃的...
天津市宝坻区举办第九届津宝音乐... 7月18日至21日,第九届津宝音乐嘉年华在天津市宝坻区开幕,来自全国各地及泰国、马来西亚的30支行进...
哈尔滨:“十八般凉艺”引客消夏 迎着3米高的奔涌“巨浪”,游客的欢呼与浪花的“轰鸣”交织,瞬间驱散了暑意——在哈尔滨波塞冬旅游度假区...
紫牛热点∣重庆万州一水上乐园漏... 扬子晚报网7月22日讯(记者 郭一鹏) 近日,有网友在社交平台发帖称,重庆市万州区威尼斯水上乐园漏电...
白城公园绿地开放共享指南:解锁... 想找片草坪晒晒太阳、带娃撒欢?想约上朋友野餐露营、记录美好瞬间?安排!白城市5处公园绿地正式开放共享...
超100家景区对金华市民免门票... 据市发改委、市文广旅游局消息,7月15日起,我市与四川省甘孜州、巴中市推出 三地市民门票互免优惠政策...