博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode】115. Distinct Subsequences
阅读量:5243 次
发布时间:2019-06-14

本文共 1722 字,大约阅读时间需要 5 分钟。

Description:

  Given two string S and T, you need to count the number of T's subsequences appeared in S. The fucking problem description is so confusing.

Input:

   String s and t

output:

  The number

Analysis:

  It's a dynamic processing problem. I drew the dynamic processing of counting the seq numbers and then got the correct formula by guessing? :) Most times I work out the final formula by deducing! Then i back to think it's real sense in the problem.

     dp[i][j] represents the number of subsequences in string T (ending before index i)  are appeared in string S (ending before index j). So, dp can be processed by the follow formula:

      = dp[i][j-1] + dp[i-1][j-1]     if s[j] == t[i]

 dp[i][j] 

                 = dp[i][j-1]                          if s[j] != t[i]

BYT:

  The fucking input size of test cases in serve are ambiguity! So if you create a 2-dimension array in defined size, you will be in trouble. Dynamic structures like vector will be better!

Code:

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

 

转载于:https://www.cnblogs.com/luntai/p/5660500.html

你可能感兴趣的文章
bootstrap的使用
查看>>
洛谷P3216 [HNOI2011] 数学作业 [矩阵加速,数论]
查看>>
分享5个有帮助的CSS选择器
查看>>
如何搭建web服务器 使用Nginx搭建反向代理服务器 .
查看>>
android中状态栏透明
查看>>
SQL注入防御绕过——宽字节注入
查看>>
匿名函数(lambda)
查看>>
OpenCV中InputArray和OutputArray使用方法
查看>>
Java与.NET 的Web Services相互调用
查看>>
linux 查看并关闭窗口
查看>>
使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目
查看>>
通过实例理解 RabbitMQ 的基本概念
查看>>
WPF自定义控件
查看>>
ASP.NET Core 2.2 基础知识(一) 依赖注入
查看>>
Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用
查看>>
微信支付现金红包接口应用实例代码说明和DEMO详解,适合用来做微信红包营销活动、吸粉利器...
查看>>
简单说一下UWP中的JumpList
查看>>
微信小程序把玩(七)数据绑定
查看>>
C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码
查看>>
UWP开发笔记——嵌套式页面的实现
查看>>