LintCode-不同的子序列
給出字串S和字串T,計算S的不同的子序列中T出現的個數。
子序列字串是原始字串通過刪除一些(或零個)產生的一個新的字串,並且對剩下的字元的相對位置沒有影響。(比如,“ACE”是“ABCDE”的子序列字串,而“AEC”不是)。
樣例給出S = "rabbbit", T = "rabbit"
返回 3
分析:一般來說,如果題目裡面給出兩個字串,基本是兩種思路,一種就是遞迴判斷,一種就是動態規劃,這裡我們可以用f(i,j)表示S中前i個字串中,T的前j個字元出現的次數,不管S[i]和T[j]相不相等,首先f(i,j)=f(i-1,j),其次要是S[i]==T[j]的話,f(i,j)
= f(i-1,j)+f(i-1,j-1),可以看到,i的狀態只與i-1有關,於是可以用滾動陣列來進行優化。程式碼類似01揹包。
程式碼:
class Solution { public: /** * @param S, T: Two string. * @return: Count the number of distinct subsequences */ int numDistinct(string &S, string &T) { // write your code here vector<int> dp(T.length()+1); dp[0] = 1; for(int i=1;i<=S.length();i++) { for(int j=T.length();j>0;j--) dp[j] += T[j-1]==S[i-1]?dp[j-1]:0; } return dp[T.length()]; } };
相關推薦
Distinct Subsequences(不同子序列的個數)——b字符串在a字符串中出現的次數、動態規劃
ive 種子 posit ava 子串 遞推關系 空串 算法與數據結構 返回 Given a string S and a string T, count the number of distinct subsequences ofT inS. A subsequence
lintcode - 不同的子序列
logs code rabbit 刪除 aec -1 序列 urn ram 給出字符串S和字符串T,計算S的不同的子序列中T出現的個數。 子序列字符串是原始字符串通過刪除一些(或零個)產生的一個新的字符串,並且對剩下的字符的相對位置沒有影響。(比如,“AC
LintCode-不同的子序列
給出字串S和字串T,計算S的不同的子序列中T出現的個數。 子序列字串是原始字串通過刪除一些(或零個)產生的一個新的字串,並且對剩下的字元的相對位置沒有影響。(比如,“ACE”是“ABCDE”的子序列字串,而“AEC”不是)。 樣例 給出S = "rabbbit",
LintCode -- 不同的子序列
LintCode -- distinct-subsequences(不同的子序列) 給出字串S和字串T,計算S的不同的子序列中T出現的個數。 子序列字串是原始字串通過刪除一些(或零個)產生的一個新的字串,並且對剩下的字元的相對位置沒有影響。(比如,“ACE”是“
[lintcode]118. 不同的子序列
連結:http://www.lintcode.com/zh-cn/problem/distinct-subsequences/給出字串S和字串T,計算S的不同的子序列中T出現的個數。子序列字串是原始字串通過刪除一些(或零個)產生的一個新的字串,並且對剩下的字元的相對位置沒有影
[LeetCode] Count Different Palindromic Subsequences 計數不同的回文子序列的個數
equal 本質 最大值 pla 結果 cte 寫法 adc www. Given a string S, find the number of different non-empty palindromic subsequences in S, and return
lintcode 734. 形式為a^i b^j c^k的子序列數量 題解
排列組合 lint 題解 else 時間復雜度 不同 con count cab 描述 給一字符串, 對形式為 a^i b^j c^k 的子序列進行計數, 即它由 i 個字符 a, 接著是 j 個字符 b, 然後是 k 個字符 c組成, i >= 1, j >
【LeetCode】115. 不同的子序列 結題報告 (C++)
原題地址:https://leetcode-cn.com/problems/distinct-subsequences/description/ 題目描述: 給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)
Leetcode-940 Distinct Subsequences II(不同的子序列 II)
str col 序列 strong return etc cts public har 1 class Solution 2 { 3 public: 4 int distinctSubseqII(string S) 5 {
[Swift]LeetCode115. 不同的子序列 | 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
Leetcode 940:不同的子序列 II(最詳細的解法!!!)
給定一個字串 S,計算 S 的不同非空子序列的個數。 因為結果可能很大,所以返回答案模 10^9 + 7. 示例 1: 輸入:"abc" 輸出:7 解釋:7 個不同的子序列分別是 "a", "b", "c", "ab", "ac", "bc", 以及 "abc"。 示例
Leetcode 115:不同的子序列(最詳細的解法!!!)
給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,"ACE" 是 "ABCDE" 的一個子序列,而 "AEC" 不是) 示例 1: 輸入: S
LeetCode 115.不同的子序列 詳解
題目詳情 給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,“ACE” 是 “ABCDE” 的一個子序列,而 “AEC” 不是) 示例 1: 輸入:
不同的子序列
The idea is the following: we will build an array mem where mem[i+1][j+1] means that S[0..j] contains T[0..i] that many times as distin
【LeetCode】115. 不同的子序列
題目描述 給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,"ACE" 是 "ABCDE" 的一個子序列,而 "AEC" 不是) 示例 1
LeetCode115不同的子序列
問題描述 給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,"ACE" 是 "ABCDE" 的一個子序列,而 "AEC" 不是) 示例 1:
LeetCode-115.不同的子序列(相關話題:動態規劃)
給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,"ACE" 是 "ABCDE" 的一個子序列,而 "AEC" 不是) 示例 1: 輸入:
Leetcode 115.不同的子序列
不同的子序列 給定一個字串 S 和一個字串 T,計算在 S 的子序列中 T 出現的個數。 一個字串的一個子序列是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,"ACE" 是 "ABCDE" 的一個子序列,而
最長上升連續子序列(LintCode)
題目來源:LintCode 原題地址:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence/
[LeetCode] Count Different Palindromic Subsequences 計數不同的迴文子序列的個數
Given a string S, find the number of different non-empty palindromic subsequences in S, and return that number modulo 10^9 + 7. A subsequence of a strin