1. 程式人生 > >LintCode-不同的子序列

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