leetcode 115. Distinct Subsequences
来源:互联网 发布:网络直播云南电视台 编辑:程序博客网 时间:2024/05/21 05:58
115. Distinct Subsequences
Given a string S and a string T, count the number of distinct subsequences of S which equals T.
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
.
动态规划思想应用的典型题目。
• 定义二维数组dp[i][j]为字符串s(0,j)变换到t(0,i)的变换方法。
• 如果S[i]==T[j],那么dp[i][j] = dp[i-1][j-1] + dp[i][j-1]。意思是:如果当前S[i]==T[j],那么当前这个字母即可以保留也可以抛弃,所以变换方法等于保留这个字母的变换方法加上不用这个字母的变换方法。
• 如果S[i]!=T[i],那么dp[i][j] = dp[i][j-1],意思是如果当前字符不等,那么就只能抛弃当前这个字符。
• 递归公式中用到的dp[0][j] = 1,dp[i][0] = 0(把任意一个字符串变换为一个空串只有一个方法)
• 定义二维数组dp[i][j]为字符串s(0,j)变换到t(0,i)的变换方法。
• 如果S[i]==T[j],那么dp[i][j] = dp[i-1][j-1] + dp[i][j-1]。意思是:如果当前S[i]==T[j],那么当前这个字母即可以保留也可以抛弃,所以变换方法等于保留这个字母的变换方法加上不用这个字母的变换方法。
• 如果S[i]!=T[i],那么dp[i][j] = dp[i][j-1],意思是如果当前字符不等,那么就只能抛弃当前这个字符。
• 递归公式中用到的dp[0][j] = 1,dp[i][0] = 0(把任意一个字符串变换为一个空串只有一个方法)
class Solution {public: int numDistinct(string s, string t) { int dp[t.size()+1][s.size()+1] = {0}; for (int j = 0; j <= s.size(); j++) dp[0][j] = 1; for (int i = 1; i <= t.size(); i++) { for (int j = 0; j <= s.size(); j++) { if(j >= i) dp[i][j] = dp[i][j-1] + (t[i-1] == s[j-1] ? dp[i-1][j-1] : 0); } } return dp[t.size()][s.size()]; }};
阅读全文
0 0
- LeetCode 115. Distinct Subsequences
- [Leetcode] 115. Distinct Subsequences
- [leetcode] 115.Distinct Subsequences
- [leetcode] 115.Distinct Subsequences
- Leetcode 115. Distinct Subsequences
- 【LeetCode】115. Distinct Subsequences
- LeetCode 115. Distinct Subsequences
- [leetcode]115. Distinct Subsequences
- LeetCode-115.Distinct Subsequences
- [LeetCode] 115. Distinct Subsequences
- LeetCode 115. Distinct Subsequences
- leetcode-115. Distinct Subsequences
- leetcode-115. Distinct Subsequences
- [LeetCode]115. Distinct Subsequences
- 【Leetcode】115. Distinct Subsequences
- [LeetCode] 115. Distinct Subsequences
- leetcode:115. Distinct Subsequences
- LeetCode 115. Distinct Subsequences
- html取消鼠标右击事件
- Opencv3.0中Mat与IplImage的转换
- 文件读写工具简单实现(二)--选择文件按钮
- 新网站seo优化中的外链建设思路
- 两个链表的公共第一个公共节点
- leetcode 115. Distinct Subsequences
- 面试的笔试题
- 第三章 Extjs在开发中如何实现代码复用 (入门教程)
- 在 JavaScript 中,如何求出两个数组的交集和差集?
- 责任链模式
- 看到好多就记下1---maven与ant
- keras实现Unet进行字符定位与识别分类
- Python变量及基本运算
- SSL证书(HTTPS)背后的加密算法